Programming Language A 学习笔记(一)
SML(一)
1. ML是一个函数式编程语言,理论基础为λ演算。
2. 变量声明
val x = e;
标准类型:单元(unit)、布尔(bool)、整型(int)、字符串(string)、实数(real)、元组(tuple)、记录(record)、列表(list)
1)负数表示:负号用“~”表示,-1表示为“~1”;
2)字符串:双引号间的字符序列;
3)实数:其他语言表述为double的浮点数;
4)list:“[]”表示空list,list 例:[1, 4, 9, 16, 25],list中的数据类型要求一致,可以嵌套;
5)tuple:圆括号中用逗号分隔的数据元素,可以嵌套,元组数据类型可以不一致,例:(a, 9);
6)record:记录的值和类型的写法都用{}括起来,例:{first : int, middle : int, last : int};
|
1 |
元组 |
列表 |
记录 |
|
括号 |
() |
[] |
{} |
|
元素类型 |
可以不同 |
必须相同 |
可以不同 |
|
长度 |
定长 |
变长 |
变长 |
|
类型表达式 |
用*连接的<元素类型>表达式 |
<元素类型> list |
{记录名: <元素类型>} |
3. 使用程序文件:use "foo.sml";
4. 函数定义
SML中函数的类型是由他的定义域和值域共同确定。
|
SML |
C语言 |
|
fun division(x : int, y : int) = x div y |
int division(int x, int y) { return x/y; } |
5. 元组数据引用
元组pr : int * bool => #1 pr元组 第一个元素,int类型;#2 pr 元组第二个元素,bool类型;
6. 列表数据引用
hd, 列表表头元素;tl,hd元素以外的列表;
7. let表达式:let b1 b2 … bn in e end
b1 b2 … bn 可以为变量声明、函数定义等, e为表达式
8. 条件表达式:if e1 then e2 else e3
e1、e2、e3为表达式,e2和e3要求相同的数据类型;
9. NONE、SOME和valOf
|
关键字 |
Evaluate |
TYPE |
|
'a |
任意类型 |
|
|
'a list |
任意类型的list;hd类型确定后,list类型固定 |
|
|
NONE |
NONE is an option value "carrying nothing" whereas |
'a option |
|
SOME e |
SOME e evaluates e to a value v and becomes the option carrying the one value v. |
t option if e has type t. |
|
null、isSome |
null to see if a list is empty, we have isSome which evaluates to false if its argumentis NONE. |
|
|
valOf |
get the value carried by SOME (raising an exception for NONE) |
10. 运算符
算术加、减、乘、除:+、-、*、div(整型)、/(real类型)
逻辑运算与、或、非、等、不等、大于、小于、大于等于、小于等于:andalso、orelse、not、=、<>、>、<、>=、<=
字符串连接:^
两个列表连接:@
数据e与列表es连接:e::es
Programming Language A 学习笔记(一)的更多相关文章
- Programming Language A 学习笔记(二)
1. 语法糖--元组的"名称引用"与"位置引用": (e1,...,en) <=> {1=e1,...,n=en} 类型:t1 * - * tn & ...
- 《The C Programming Language》学习笔记
第五章:指针和数组 单目运算符的优先级均为2,且结合方向为自右向左. *ip++; // 将指针ip的值加1,然后获取指针ip所指向的数据的值 (*ip)++; // 将指针ip所指向的数据的值加1 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 moveit是书的最后一章,由于对机械臂完全不知,看不懂 ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
随机推荐
- 内核编译报错Fedora20(友善)
首先说明我的宿主机环境:Fedora20 64位,开发板是友善Smart210(S5PV210——Cotex-A8)!!!马上入题! 按照开发板的用户手册来编译内核,一直报这个错误:/opt/Frie ...
- SAP模板
用的是kuangbin的模板:http://www.cnblogs.com/kuangbin/archive/2012/09/29/2707955.html ;//点数的最大值 ;//边数的最大值 c ...
- DOM0编程与基础方法
## 这里记录一下DOM编程的基础与方法----### DOM 的O:对象 objectO表示Object,对象的意思.JavaScript中对象可以分为三种类型1. 用户定义对象(user-defi ...
- bzoj violet系列 (2708~2725)
cbh大爷说:写博客不能弃坑. orz cbh 那我就来更新博客了. violet这个系列的题好神啊……出题人好劲啊…… ……怎么最近都在理性愉悦啊…… 另外bzoj400题纪念~ 2708: [Vi ...
- The specified module could not be found
打开IIS 信息服务,在左侧找到自己的计算机,点右键,选择属性,在主属性中选编辑,打开“目录安全性”选项卡,单击“匿名访问和验证控制”里的“编辑”按钮,在弹出的对话框中确保只选中了“匿名访问”和“集成 ...
- JDBC的批处理操作三种方式 pstmt.addBatch()
package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import java.sql.Connection; import java ...
- mysql 5.5 修改字符编码
修改/etc/mysql/my.cnf 配置文件: 最后重启mysql 服务,再查看: 编码已经改好了,可以支持中文字符编码了.
- WPF之命名空间和资源
1.参考: https://msdn.microsoft.com/zh-cn/library/ms747086(v=vs.110).aspx http://www.cnblogs.com/cww201 ...
- java--字符串
一.基本数据类型 基本类型 大小 对应的包装类 最小值 最大值 byte 8-bit Java.lang.Byte -128 +127 short 2Byte= 16bit Java.lang.Sho ...
- mysql5.7安装
用到的命令和文件: 错误日志:/usr/local/mysql/data/carydeMBP.lan.err 忘记密码时,关闭mysql的密码登陆验证:mysqld_safe --skip-grant ...