【发布时间】:2012-05-21 22:49:03
【问题描述】:
我开始学习 Ocaml,使用 hickey book,我被困在练习 3.4,第 9 部分
让 x x = x + 1 在 x 2运行的结果是3,但是我不明白为什么?
【问题讨论】:
标签: ocaml
我开始学习 Ocaml,使用 hickey book,我被困在练习 3.4,第 9 部分
让 x x = x + 1 在 x 2运行的结果是3,但是我不明白为什么?
【问题讨论】:
标签: ocaml
当您编写 let x x = ... 时,您正在定义一个名为 x 的函数,它将名称 x 绑定到它的参数。
由于您使用let 而不是let rec,因此该函数不知道自己的名称,因此据它所知,唯一值得了解的x 是作为参数传入的那个。
因此,当您使用x 2 调用函数时,它会将值2 绑定到名称x 并计算x+1,得到3 作为结果。
【讨论】:
let rec而不是let,并且有可能会更加混乱......)
let x x = e 只是let x = (fun x -> e) 的简写时,就会更容易理解为什么会这样。
let rec x x = ... 变成了let rec x = (function x -> ...) 显然等价于let x = (function x -> ...)