Week2_Introduce_Part1
Posted lvgj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Week2_Introduce_Part1相关的知识,希望对你有一定的参考价值。
Week2_Introduce_Part1
ML Expressions and Variable Bindings
-
bindings
-
syntax
-
type-check
-
evaluated
怎么去评价,是依赖于dynamic environment(动态环境)
- 任何一个操作都可以从上面三个进行分析,比如说addtion(加),conditional等
-
static enviorment
其中存放了类型
-
dynamic environment
其中存放了Value
Using use
- 再REPL中control c+control s可以使用到命令行
- 使用use命令可以调用文件,例如 use "foo.sml"
Variables are Immutable
- 比如说我们先定义了val x = 8+9,那么x就和17绑定了,当使用val x = 19时,就出现了
- shadowing,覆盖的意思
Function Bindings
fun pow (x:int,y:int) =
if y = 0
then 1
else x*pow(x,y-1)
-
syntax 语法
fun x0 (x1:t1,...,xn:tn) = e
e 是一个expression -
type-checking
type-checking主要是字得类型的检验,其检验的主要对象时e
即后面的那个表达式
type-checking是从static environment中进行比对,看是否合法
另外,一个方法的类型是"argument type"->"result type" -
Evaluation
A function is a value,函数也是一个值,它被存放在environment中
Funtion Call
- syntax语法
e0 (e1,...,en),其中的小括号是可选的optional
Pairs and other Tuples
- 这是指的compoud data,组合数据
- syntax (e1,e2)
- type t1*t2
- 访问
- 使用#1 和#2
fun div_mod (x:int,y : int ) =
(x div y,x mod y)
fun sort_pair (pr : int*int) =
if (#1 pr) < (#2 pr)
then pr
else ((#2 pr),(#1 pr))
Lists
- list中的所有数据必须是一样的类型same type
- syntax []
- 操作
添加元素 ::
判断空null
取出头元素 hd
获取剩下元素 tl
- 例子
fun sum_list (xs : int list) =
if null xs
then 0
else hd(xs) + sum_list(tl xs)
fun countdown (x : int) =
if x=0
then []
else x :: countdown(x-1)
fun sum_pair_list (xs : (int * int) list) =
if null xs
then 0
else #1 (hd xs) + #2 (hd xs) + sum_pair_list(tl xs)
fun firsts (xs : (int * int) list) =
if null xs
then []
else (#1 (hd xs))::(firsts(tl xs))
翻译
- semicolon 分号
- colon 冒号
- syntax 语法
- semantics 语义
- Immutable 不可变的
- trivial 琐碎
- parentheses 小括号
以上是关于Week2_Introduce_Part1的主要内容,如果未能解决你的问题,请参考以下文章