定义时间环境与应用程序时间环境之间的差异

时间:2018-01-16 17:12:10

标签: sml environment ml

我在标准ML中有这个代码,我想知道在定义和应用程序时创建了什么环境和绑定,以及两者之间的区别。

fun boo boo = 
  let
    type boo = int
    val boo : boo = boo
    val boo : { boo : boo } = { boo = boo }
  in
    # boo boo
  end

我搜索过但无法得到准确答案,

提前致谢。

1 个答案:

答案 0 :(得分:0)

我对SML还有点新鲜,但我想我已经有了这个:

fun boo boo (* 1 *) = 
let
    type boo (* 2 *) = int
    val boo (* 3 *) : boo = boo (* 1 *)
    val boo (* 4 *) : { boo (* 5 *) : boo } = { boo = boo } (* 6 *)
in
    # boo boo (* 7 *)
end

我标记了每个 boo 以跟踪它们。他们是:

  1. 类型为int
  2. 的自由参数(对函数' boo')
  3. 一种类型,别名为int
  4. boo(int)类型的新值,它绑定到传递给函数的参数
  5. 记录值......
  6. with field' boo'类型为boo(int)...
  7. 指定了" new"来自(3)的嘘值
  8. 投射场' boo'来自唱片' boo' (有类型' boo'(int))
  9. 整体功能的类型为:int -> int