Ocaml变量范围如何工作?

bba*_*a42 5 ocaml

我开始学习Ocaml,使用hickey书,我坚持练习3.4,第9部分

let x x = x + 1 in x 2

操作的结果是3,但我不明白为什么?

Chr*_*lor 7

在编写时,let x x = ...您正在定义一个函数x,该函数将名称绑定x到其参数.

由于您使用的是let代替let rec,因此该函数不知道自己的名称,因此就其所知,唯一x值得了解的是作为参数传入的函数.

因此,当您使用函数调用时x 2,它会将值绑定2到名称x并进行求值x+1,得到3结果.

  • 当你意识到`let xx = e`只是`let x =(fun x - > e)`的简写时,更容易理解为什么这是可能的. (4认同)