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
。我很困惑为什么会这样。
答案 0 :(得分:0)
f返回一个函数,因此绑定到g的值具有函数类型。