Когда люди говорят о F #, они иногда упоминают термин top-level
;В F # что означает верхний уровень?
какой top-level
средний?
Например, в предыдущем SO Q &
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
Термин также регулярно появляется в комментариях, но и для тех, кто Q & AI не сделал REFE их.
Статья Википедии о scope затрагивает это, но не имеет специфических особенностей для F #.
F # 3.x спецификации только гласит:
11.2.1.1 Arity Conformance для функций и значения
Скобки указывают на
top-level
функцию, которая может быть вычислена выражение а первого класса, который вычисляет значение функции, , а не значение функции времени компиляции.
13,1 Пользовательские атрибуты
Например, атрибут STAThread должен располагаться непосредственно перед «делать» заявление
top-level
.
14.1.8 Разрешение имен для переменных типа
изначально она пуста для любого члена или любой другой
top-level
построить , содержащий выражения и типы.
Я подозреваю, что термин имеет разные значения в разных контекстах: Область применения, F # интерактивная, затенение.
Если вы могли бы также объяснить происхождение из языков предшественника F # (ML, CAML, OCaml), это будет оценено.
Наконец, я не планирую отмечать ответ в течение нескольких дней, чтобы избежать поспешных ответов.
Представляет интерес в связи с OCaml: [интерпретатор, system] (http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual023.html) –
Интересует: [разность поведенческих различий по модулю vs при использовании F # лямбда в качестве фактического аргумента формальному параметру, который ожидает System .Func] (http://stackoverflow.com/q/31712588/1243762) –