Week2_Introduce_Part1

Posted lvgj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Week2_Introduce_Part1相关的知识,希望对你有一定的参考价值。

Week2_Introduce_Part1

ML Expressions and Variable Bindings

  1. bindings

  2. syntax

  3. type-check

  4. evaluated

    怎么去评价,是依赖于dynamic environment(动态环境)

  • 任何一个操作都可以从上面三个进行分析,比如说addtion(加),conditional等
  • 技术图片
  1. static enviorment

    其中存放了类型

  2. 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

  1. 这是指的compoud data,组合数据
  • syntax (e1,e2)
  • type t1*t2
  1. 访问
  • 使用#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

  1. list中的所有数据必须是一样的类型same type
  • syntax []
  • 操作

    添加元素 ::
    判断空null
    取出头元素 hd
    获取剩下元素 tl

  1. 例子
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))

翻译

  1. semicolon 分号
  2. colon 冒号
  3. syntax 语法
  4. semantics 语义
  5. Immutable 不可变的
  6. trivial 琐碎
  7. parentheses 小括号







以上是关于Week2_Introduce_Part1的主要内容,如果未能解决你的问题,请参考以下文章

vs 2010代码片段

vs 2010代码片段

1 代码片段1

sublime text3 增加代码片段(snipper)

web代码片段

JavaScript单行代码,也就是代码片段