为什么 'let x = 1' 是 F# 中有效的表达式?

5

我正在尝试编写F#解析器。根据规范,let表达式如下:

let value-defn in expr

我正在使用尝试F#进行测试。我尝试了下面的代码,它被成功解析。

#light "off"
let a = 1

然而,根据手册,应该始终包含in关键字。为什么这是有效的F#代码?


你链接的规范中充满了形如 let x = y 的示例。 - BartoszKP
3
重点在于单独的 let a = 1 不是一个表达式,而是一个有效的顶层模块定义(可以在模块内部或 F# 交互环境中使用)。 - Tomas Petricek
1个回答

7
这实际上已经被规范的另一部分(A.2.1.1)所涵盖。

module-function-or-value-defn :

  attributesopt let function-defn

  attributesopt let value-defn

由于您直接在模块中定义了某个内容,因此它不需要使用in关键字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接