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

Ocaml 使用局部变量声明全局变量,ocaml,Ocaml,假设我想使用局部变量声明一个全局变量: 我能做到(1) 但现在如果我这样做(2) 似乎ocaml不理解这个语法,它停在;;,但我不明白为什么,因为(3) 工作,即使它是无用的 第(2)点发生了什么?ocaml是如何分析这个表达式的?两种类型的lets之间的最大区别在于let。。。in…是一个表达式,但是letwithoutin不是。现在,在中的之后的部分让。。。in…必须是表达式,因此此处不允许使用inlesslet,只允许在模块的顶层使用 let y = let x = 1 in x + 1;

假设我想使用局部变量声明一个全局变量: 我能做到(1)

但现在如果我这样做(2)

似乎ocaml不理解这个语法,它停在;;,但我不明白为什么,因为(3)

工作,即使它是无用的


第(2)点发生了什么?ocaml是如何分析这个表达式的?

两种类型的
let
s之间的最大区别在于
let。。。in…
是一个表达式,但是
let
without
in
不是。现在,在
中的
之后的部分让。。。in…
必须是表达式,因此此处不允许使用
in
less
let
,只允许在模块的顶层使用

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