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

时间: 2024-12-17 07:35:59

Programming Language A 学习笔记(一)的相关文章

《The Swift Programming Language》的笔记-第24页

The Swift Programming Language读书笔记学习笔记 第24页 本页主要内容有两个:打印输出和如何在swift注释代码 1 如何打印变量和常量的值? 使用println函数,细节:println函数除打印变量常量值外还输出一个换行 1) 打印常量 eg1 let hw = "hello chinagame.me" println(hw) => 可将字符串常量输出到Console里 2) 打印变量, 双引号里用 \(变量名) 输出,这个像C语言里的%s eg

《The Swift Programming Language》的笔记-第28页

·        第28页 本页里的主要内容是: 1 介绍swift语言里的各类数制,或者说某一整数的不同表示形式. 1)十进制,无前缀 2)二进制,以0b开头,后边是若干个0和1的序列 3)八进制,以0o开头,后边是若干0~7的序列 4)16进制,以0x开头,后是0~9.a~f序列 以常量31为例,二进制表示31为:0b11111 以常量31为例,八进制表示31为:0o37 以常量31为例,16进制表示31为:0x1f 2 科学计数表示数 1)以10为底的科学计数 2)以2为底的科学计数 12

Programming with Objective-C 学习笔记

这几天把Programming with Objective-C再看了一边,发现有很多以前不明确的地方.现在把一些重要的点记下来,巩固学习效果. 1.Objective-C Classes Are also Objects(OC类也是对象) In Objective-C, a class is itself an object with an opaque type called Class. Classes can't have properties defined using the dec

《The Swift Programming Language》的笔记-第27页

·    第27页 1 type safelanguage 本页的主要内容是说swift语言是"类型检查"的安全型编程语言.意思是赋值语句的左值和右值的类型要一致,左值声明是string型变量那么等号的右值就该是个用双引號引起来的字符串.而不能是整形或者浮点数据. 编译器在编译代码时会检查赋值语句的左值和右值.假设类型不匹配.编译器报错,即要做数据的安全检查,保证数据的一致性. 2 type inferencelanguage swift编译时会检查数据类型的一致性,但不是说在定义常量

Programming in scala学习笔记(二)Next steps in scala

1 声明一个数组 Java的string数组声明如下: String[] greetStrings = new String()[4]; 数组索引跟java和c++/c语言不一样的是不用"[ ]",用"( )". 也可以用比较繁琐的方式声明数组: greetStrings是val常量,只能指向同一个Array对象,但是,greetStrings(0-2)的值是可变的. 2. 关于数组为什么不用"[ ]",用"( )" Arra

Linux 程序设计学习笔记----命令行参数处理

转载请注明出处.http://blog.csdn.net/suool/article/details/38089001 问题引入----命令行参数及解析 在使用linux时,与windows最大的不同应该就是经常使用命令行来解决大多数问题.比如下面这样的: 而显然我们知道C语言程序的入口是mian函数,即是从main函数开始执行,而main函数的原型是: int main( int argc, char *argv[] ); int main( int argc, char **argv );

Linux System Programming 学习笔记(八) 文件和目录管理

1. 文件和元数据 每个文件都是通过inode引用,每个inode索引节点都具有文件系统中唯一的inode number 一个inode索引节点是存储在Linux文件系统的磁盘介质上的物理对象,也是LInux内核通过数据结构表示的实体 inode存储相关联文件的元数据 ls -i 命令获取文件的inode number /* obtaining the metadata of a file */ #include <sys/types.h> #include <sys/stat.h>

Linux System Programming 学习笔记(十) 信号

1. 信号是软中断,提供处理异步事件的机制 异步事件可以是来源于系统外部(例如用户输入Ctrl-C)也可以来源于系统内(例如除0) 内核使用以下三种方法之一来处理信号: (1) 忽略该信号.SIGKILL和SIGSTOP不能被忽略. (2) 捕捉并且处理该信号.The kernel will suspend execution of the process's current code path and jump to a previously registered function. SIGK

Linux System Programming 学习笔记(五) 进程管理

1. 进程是unix系统中两个最重要的基础抽象之一(另一个是文件) A process is a running program A thread is the unit of activity inside of a process the virtualization of memory is associated with the process, the threads all share the same memory address space 2. pid The idle pro