使用局部变量声明全局变量

时间:2018-09-05 17:13:02

标签: ocaml

假设我要使用局部变量声明一个全局变量: 我可以做(1)

let y = let x = 1 in x + 1;;

但是现在如果我愿意(2)

let x = 1 in let y = x + 1;;

似乎ocaml无法理解这种语法,它以;;结尾,但是我不明白为什么,因为(3)

let x = 1 in 1;;

有效,即使没用。

在(2)会发生什么? ocaml如何尝试分析此表达?

1 个答案:

答案 0 :(得分:3)

两种let之间的最大区别是let ... in ...是一个表达式,而没有let的{​​{1}}不是表达式。现在inin之后的部分必须是一个表达式,因此此处不允许少let ... in ...的{​​{1}}-仅在模块的顶层允许。