Val绑定和函数之间的SML差异

时间:2018-10-20 23:04:33

标签: sml

val x = 1

fun f y =
  let
    val x = y+1
  in
    fn z => x + y + z
  end

val x = 3
val g = f 4
val y = 5
val z = g 6

我目前正在尝试理解上述代码段中的函数闭包和词法作用域。在此示例中,为什么g是函数而不是val绑定?据我了解,g正在调用f(4),并且应该绑定到返回值。但是,类型检查器说g的类型为fn : int -> int。我很困惑为什么会这样。

1 个答案:

答案 0 :(得分:0)

f返回一个函数,因此绑定到g的值具有函数类型。