ExpRe[24] Oz[1] 变量,组合,函数
文章目录
- 变量
- 示例
- `record`和`tuple`
- 函数
- 总结和问答练习
时效性
本篇撰写时间为2021.12.14,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。
本篇前置:
- ExpRe[23] Oz[0] emacs初步,Hello world
https://www.cnblogs.com/minor-second/p/15689596.html
变量
Oz variables are single-assignment variables or more appropriately logic variables. In imperative languages like C and Java, a variable can be assigned multiple times. In contrast, single assignment variables can be assigned only once.
- variable只能赋值一次,bound之后就不能改变
- 更准确地,Oz的变量是logic variable,可以有相等关系
- 想“变化”?需要把变量绑定到
cell
类型的值 - Oz是动态类型的。只有绑定了值才知道变量类型
示例
文档中用了Browse
,但我们没有GUI,所以用Show
在上方窗口输入
local I J K inI = 5J = 'a'{NewName K}{Show [I J K]}
end
按M-C-x
,再按F10 O h e
看到输出
record
和tuple
Records are structured compound entities. A record has a label and a fixed number of components or arguments. There are also records with a variable number of arguments that are called open records. For now, we restrict ourselves to ‘closed’ records.
record
类似于一个结构体。但具有一个标签
tuple
相当于某种意义的“数组”(即结构体的"feature"是从1开始的数)
输入
declare A B C X Y inX = t(k:A m:B)Y = t(A B C)A = 1B = 2C = 3{Show [X Y]}
declare Z W in{Arity X Z}{Show Z}{Arity Y W}{Show W}
输出
[1 2 3]
[t(k:1 m:2) t(1 2 3)]
[k m]
[1 2 3]
具体参见文档
- 注意
{Arity X Z}
要求X
已绑定,而Z
未绑定,将把[k m]
这种东西赋值给Z
. 对于习惯“返回值”的人,可以理解成Z
是“函数返回值” CondSelect
同理
函数
一个简单的函数示例
declare
fun {Fact N}if N==0 then 1 else N*{Fact N-1} end
end
定义了函数之后可以用{Show {Fact 8}}
这种简单调用
注:Shift + Insert
可以在MobaXterm
中粘贴,即使在emacs
中也可以,这很方便。
总结和问答练习
- Q: 定义一个函数并用它计算
88
和77
的最大公约数
A:
declare
fun {GCD A B}if B==0 then A else {GCD B {Int.'mod' A B}} end
end
{Show {GCD 88 77}}
- 这里假设输入的前一个数比较大
Int.'mod'
这种用法去官方文档http://mozart2.org/mozart-v1/doc-1.4.0/base/int.html#section.numbers.integers
可以查到
ExpRe[24] Oz[1] 变量,组合,函数相关推荐
- Python使用matplotlib可视化多分类变量组合下分组小提琴图、使用seaborn中的catplot函数可视化多分类变量组合下分组小提琴图(Categorical Plots)
Python使用matplotlib可视化多分类变量组合下分组小提琴图.使用seaborn中的catplot函数可视化多分类变量组合下分组小提琴图(Categorical Plots) 目录
- operate函数_跟着 redux 学 compose组合函数
▲ 点击上方蓝字关注我 ▲ 把你的心 我的心串一串 串一株幸运草 串一个同心圆 文 / 景朝霞 来源公号 / 朝霞的光影笔记 ID / zhaoxiajingjing 目录0 / 热热身1 / red ...
- 翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇...
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- c2064 项不会计算为接受0个参数的函数_getMask()讨论:Abaqus Part对象的成员变量常用函数...
最近工作之余,想制作一个自动对多cell的Part进行skin并建立相应set的小插件.我的目的是对该Part中各个cell分别进行skin,以便于将来赋予不同的属性.这样可以有效的减少输出结果文件的 ...
- 全排列函数、组合函数
1 1.求一个全排列函数:如p([1,2,3])输出: [123],[132],[213],[231],[321],[312]. 2.求一个组合函数如p([1,2,3])输出: [1],[2],[3] ...
- JS高级——纯函数、柯里化(手写自动柯里化函数)、组合函数(手写自动组合函数)
一.理解JavaScript纯函数 函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式,所以也有纯函数的概念: 在react开发中纯函数是被多次提及的: 比如react ...
- JS组合函数(Composition):原来如此!
有时会听到组合函数这个概念,就是到这是高阶函数,函数式编程,特别高大上.但是可能我们都没察觉到,平时一直都在使用它.(本文阅读时间约15分钟) 目录 1. 组合函数是什么? 2. COMPOSE 3. ...
- 纯函数、柯里化、组合函数的解析以及代码实现
文章目录 一.纯函数的概念和理解 二.JavaScript柯里化 1.柯里化的理解 2.将函数柯里化的代码实现 三.组合函数 1.组合函数的理解 2.通用的组合函数的实现 一.纯函数的概念和理解 纯函 ...
- 翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 4 章:组合函数...
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
最新文章
- vue数据源转json问题
- Mockito测试void方法会引发异常
- python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排
- !!!光线对视频识别技术的影响
- Properties类与IO流
- 数据库MySQL/mariadb知识点——日志记录(2)二进制日志
- os的java版本_如何在OS X上设置或更改默认的Java(JDK)版本?
- LeetCode题解41.First Missing Positive
- 使用Acronis Disk Director Suite调整分区大小
- 三元操作符(即条件表达式)
- 玩玩AJAX之使用ashx文件响应来自JQuery的JSON请求.
- php 伸展菜单代码,JQUERY编写的一款简易伸展显示详情菜单特效
- Clustering by Passing Messages Between Data Points
- java数据透视表_使用流实现Java数据透视表
- 修改游戏存档之植物大战僵尸
- Javascript技巧之对话窗口
- 试用期没到辞职有工资吗?
- GD32F303固件库开发(7)----printf打印配置
- 交通信号灯课程设计(红绿灯)
- Debian 一些基础操作
热门文章
- android代码共享(so和jar)
- 北京营业性演出许可证办理流程详细
- 屏蔽搜索引擎蜘蛛的代码
- k线顶分型 python_K线战法之『顶底分型』高手懂的!
- 【微服务|Dubbo】Dubbo整合zookeeper/redis/Multicast作为注册中心
- PhotoShop把gif动图导出为多张png说明
- 微信小程序中顶部导航栏全局切换
- el-table高度根据内容自适应且设置最大高度
- 计算机主机有哪些软胶,软胶塑料有多少种啊?它们的材质是什么啊?
- 原华润微常务副董事长陈南翔,正式加盟紫光集团任联席总裁