假设我想使用局部变量声明一个全局变量:我能做(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如何试图分析这个表达式?
两种类型的let
s之间的巨大差异是let ... in ...
是一个表达式,但没有let
的in
不是。现在in
中let ... in ...
之后的部分必须是一个表达式,因此不允许使用in
less let
- 它只允许在模块的顶层。