当人们谈论 F# 时,他们有时会提到这个词top-level
;
是什么top-level
意思?
例如在之前的 SO Q&A
错误 FS0037 有时,非常令人困惑
定义模块 VS.NET 与 F# 交互 F#
中的命名空间和模块有什么区别?
F# F# 和 MEF 中的 AutoOpen 属性
:导出函数
如何执行此 F# 函数
该术语也经常出现在评论中,但对于那些 Q&A 我没有引用它们。
关于范围的维基百科文章涉及到这一点,但没有关于 F# 的细节。
F# 3.x 规范仅声明:
11.2.1.1 函数和值的 Arity 一致性
括号表示一个
top-level
函数,它可能是计算为函数值的一等计算表达式,而不是编译时函数值。
13.1 自定义属性
例如,STAThread 属性应该放在
top-level
“do”语句之前。
14.1.8 类型变量的名称解析
top-level
对于包含表达式和类型的任何成员或任何其他构造,它最初为空。
我怀疑这个术语在不同的上下文中有不同的含义:Scope、F# interactive、shadowing。
如果您还可以解释 F# 前身语言(ML、CAML、OCaml)的起源,我们将不胜感激。
最后,我不打算在几天内将答案标记为已接受,以避免仓促回答。