Quando le persone parlano di F # a volte menzionano il termine top-level
;In F # cosa significa top-level?
cosa significa "top-level
"?
Ad esempio, nel precedente SO Q & Un
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
Il termine compare regolarmente anche nei commenti, ma per coloro Q & AI non ha fatto refe rence loro.
L'articolo di Wikipedia su scope tocca questo, ma non ha specifiche per F #.
La F # 3.x spec afferma soltanto:
11.2.1.1 Arity conformità per funzioni e valori
Le parentesi indicano una funzione
top-level
, che potrebbe essere un'espressione calcolata di prima classe calcola un valore di funzione, anziché un valore di funzione in fase di compilazione.
13,1 Attributi personalizzati
Ad esempio, l'attributo STAThread deve essere posto immediatamente prima di una dichiarazione
top-level
“fare”.
14.1.8 Risoluzione nomi per variabili di tipo
è inizialmente vuoto per qualsiasi utente o qualsiasi altra
top-level
costrutto contenente espressioni e tipi.
ho il sospetto che il termine ha significati diversi in contesti diversi: Scope, F # interattivo, shadowing.
Se si potesse anche spiegare le origini dai linguaggi predecessori di F #, (ML, CAML, OCaml), sarebbe apprezzato.
Infine, non ho intenzione di contrassegnare una risposta accettata per alcuni giorni per evitare risposte affrettate.
di interesse legati alla OCaml: [toplevel system] (http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual023.html) –
Di interesse: [modulo vs tipo differenza di comportamento sull'uso di F # lambda come argomento effettivo del parametro formale che si aspetta System .Func] (http://stackoverflow.com/q/31712588/1243762) –