文章目录

  • 变量
    • 示例
  • `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看到输出

recordtuple

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中也可以,这很方便。

总结和问答练习

  1. Q: 定义一个函数并用它计算8877的最大公约数
    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] 变量,组合,函数相关推荐

  1. Python使用matplotlib可视化多分类变量组合下分组小提琴图、使用seaborn中的catplot函数可视化多分类变量组合下分组小提琴图(Categorical Plots)

    Python使用matplotlib可视化多分类变量组合下分组小提琴图.使用seaborn中的catplot函数可视化多分类变量组合下分组小提琴图(Categorical Plots) 目录

  2. operate函数_跟着 redux 学 compose组合函数

    ▲ 点击上方蓝字关注我 ▲ 把你的心 我的心串一串 串一株幸运草 串一个同心圆 文 / 景朝霞 来源公号 / 朝霞的光影笔记 ID / zhaoxiajingjing 目录0 / 热热身1 / red ...

  3. 翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  4. c2064 项不会计算为接受0个参数的函数_getMask()讨论:Abaqus Part对象的成员变量常用函数...

    最近工作之余,想制作一个自动对多cell的Part进行skin并建立相应set的小插件.我的目的是对该Part中各个cell分别进行skin,以便于将来赋予不同的属性.这样可以有效的减少输出结果文件的 ...

  5. 全排列函数、组合函数

    1 1.求一个全排列函数:如p([1,2,3])输出: [123],[132],[213],[231],[321],[312]. 2.求一个组合函数如p([1,2,3])输出: [1],[2],[3] ...

  6. JS高级——纯函数、柯里化(手写自动柯里化函数)、组合函数(手写自动组合函数)

    一.理解JavaScript纯函数 函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式,所以也有纯函数的概念: 在react开发中纯函数是被多次提及的: 比如react ...

  7. JS组合函数(Composition):原来如此!

    有时会听到组合函数这个概念,就是到这是高阶函数,函数式编程,特别高大上.但是可能我们都没察觉到,平时一直都在使用它.(本文阅读时间约15分钟) 目录 1. 组合函数是什么? 2. COMPOSE 3. ...

  8. 纯函数、柯里化、组合函数的解析以及代码实现

    文章目录 一.纯函数的概念和理解 二.JavaScript柯里化 1.柯里化的理解 2.将函数柯里化的代码实现 三.组合函数 1.组合函数的理解 2.通用的组合函数的实现 一.纯函数的概念和理解 纯函 ...

  9. 翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 4 章:组合函数...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

最新文章

  1. vue数据源转json问题
  2. Mockito测试void方法会引发异常
  3. python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排
  4. !!!光线对视频识别技术的影响
  5. Properties类与IO流
  6. 数据库MySQL/mariadb知识点——日志记录(2)二进制日志
  7. os的java版本_如何在OS X上设置或更改默认的Java(JDK)版本?
  8. LeetCode题解41.First Missing Positive
  9. 使用Acronis Disk Director Suite调整分区大小
  10. 三元操作符(即条件表达式)
  11. 玩玩AJAX之使用ashx文件响应来自JQuery的JSON请求.
  12. php 伸展菜单代码,JQUERY编写的一款简易伸展显示详情菜单特效
  13. Clustering by Passing Messages Between Data Points
  14. java数据透视表_使用流实现Java数据透视表
  15. 修改游戏存档之植物大战僵尸
  16. Javascript技巧之对话窗口
  17. 试用期没到辞职有工资吗?
  18. GD32F303固件库开发(7)----printf打印配置
  19. 交通信号灯课程设计(红绿灯)
  20. Debian 一些基础操作

热门文章

  1. android代码共享(so和jar)
  2. 北京营业性演出许可证办理流程详细
  3. 屏蔽搜索引擎蜘蛛的代码
  4. k线顶分型 python_K线战法之『顶底分型』高手懂的!
  5. 【微服务|Dubbo】Dubbo整合zookeeper/redis/Multicast作为注册中心
  6. PhotoShop把gif动图导出为多张png说明
  7. 微信小程序中顶部导航栏全局切换
  8. el-table高度根据内容自适应且设置最大高度
  9. 计算机主机有哪些软胶,软胶塑料有多少种啊?它们的材质是什么啊?
  10. 原华润微常务副董事长陈南翔,正式加盟紫光集团任联席总裁