【发布时间】:2016-07-30 00:14:09
【问题描述】:
当人们谈论 F# 时,他们有时会提到术语 top-level;
top-level 是什么意思?
例如在之前的 SO Q&A 中
Error FS0037 sometimes, very confusing
Defining Modules VS.NET vs F# Interactive
What the difference between a namespace and a module in F#?
AutoOpen attribute in F#
F# and MEF: Exporting Functions
How to execute this F# function
该术语也经常出现在 cmets 中,但对于那些 Q&A 我没有引用它们。
scope 上的 Wikipedia 文章提到了这一点,但没有关于 F# 的详细信息。
F# 3.x 规范仅声明:
11.2.1.1 函数和值的 Arity 一致性
括号表示
top-level函数,它可能是 计算为函数值的一流计算表达式, 而不是编译时函数值。
13.1 自定义属性
例如,应立即放置 STAThread 属性 在
top-level“do”语句之前。
14.1.8 类型变量的名称解析
对于任何成员或任何其他
top-level构造,它最初都是空的 包含表达式和类型。
我怀疑该术语在不同的上下文中具有不同的含义: 范围、F# 交互式、阴影。
如果您还可以解释 F# 前身语言(ML、CAML、OCaml)的起源,我们将不胜感激。
最后,我不打算在几天内将答案标记为已接受,以避免仓促回答。
【问题讨论】:
-
对 OCaml 感兴趣:The toplevel system
标签: scope f# shadowing toplevel