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

问题描述 投票:1回答:1

假设我想使用局部变量声明一个全局变量:我能做(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如何试图分析这个表达式?

ocaml
1个回答
3
投票

两种类型的lets之间的巨大差异是let ... in ...是一个表达式,但没有letin不是。现在inlet ... in ...之后的部分必须是一个表达式,因此不允许使用inless let - 它只允许在模块的顶层。

© www.soinside.com 2019 - 2024. All rights reserved.