Ich könnte falsch über die oberste Ebene nachdenken. Was ist der bevorzugte Weg, um eine Sammlung von Direktiven der obersten Ebene als Teil eines Projekts zu verwalten?

Gibt es eine Möglichkeit, Anweisungen der obersten Ebene wie #install_printer in eine OCaml-Quelldatei aufzunehmen, damit sie beim Kompilieren des Programms ignoriert, aber beim Ausführen von der obersten Ebene ausgeführt werden?

Idealerweise möchte ich auch, dass die Anweisungen beim Kompilieren des Programms typüberprüft werden, selbst wenn die Anweisung selbst ignoriert wird, z.

type 'a with_infinity = Finite of 'a | Infinite

let print_int_with_infinity pp item =
(match item with
    | Infinite -> Format.pp_print_string pp "Infinite"
    | Finite i -> Format.pp_print_int pp i)

(* install printer cannot occur in this context *)
#install_printer print_int_with_infinity
0
Gregory Nisbet 28 Dez. 2015 im 20:37

1 Antwort

Es gibt keine vordefinierte Methode, aber Sie können die Direktive beim Kompilieren von einem Präprozessor entfernen lassen.

Um die Grundelemente zu überprüfen, können Sie sie am besten auf eine Art und Weise vorverarbeiten

#install_printer some_function

Zu

let _ = (some_function:Format.formatter -> 'a -> unit)

2
Pierre Chambart 28 Dez. 2015 im 17:45