let x = 2;;
let x = 3
in let y = x +1
in x + 1;;
let x = 3 and y = x + 1
in x + y;;
结果按每个表达式分别排序:
val x : int = 2
- : int = 7
- : int = 6
你能帮我理解为什么最后一个表达式等于 6 吗?我很难理解。
我在tryOCamlpro中运行此代码。
let x = 2;;
let x = 3
in let y = x +1
in x + 1;;
let x = 3 and y = x + 1
in x + y;;
结果按每个表达式分别排序:
val x : int = 2
- : int = 7
- : int = 6
你能帮我理解为什么最后一个表达式等于 6 吗?我很难理解。
我在tryOCamlpro中运行此代码。
第一个是不言自明的。
第二个应该警告您
y
未使用。x
是3
,所以x + 1
也是4
。您观察到的结果7
表明您向我们展示的代码实际上并不是您所评估的代码。对于第三个,让我们尝试一些不同的东西:
嗯。让我们启动一个干净的解释器环境并尝试一下:
由此我们可以看出, 的定义
y
并没有使用x
定义为3
而是使用了 的先前定义x
为2
。你可能想要:
let ... and ...
或结构let ... and ... in ...
实际上仅对相互递归函数有用。