我正在尝试编写F#解析器。根据规范,let表达式如下: let value-defn in expr 我正在使用尝试F#进行测试。我尝试了下面的代码,它被成功解析。 #light "off" let a = 1 然而,根据手册,应该始终包含in关键字。为什么这是有效的F#代码?
这实际上已经被规范的另一部分(A.2.1.1)所涵盖。 module-function-or-value-defn : attributesopt let function-defn attributesopt let value-defn 由于您直接在模块中定义了某个内容,因此它不需要使用in关键字。
let x = y
的示例。 - BartoszKPlet a = 1
不是一个表达式,而是一个有效的顶层模块定义(可以在模块内部或 F# 交互环境中使用)。 - Tomas Petricek