Возможно, я думаю о верхнем уровне неправильно. Каков предпочтительный способ поддерживать коллекцию директив верхнего уровня в рамках проекта?Вставить директиву верхнего уровня в файлах ml
Есть ли способ включить директивы верхнего уровня, такие как #install_printer
в исходный файл OCaml, чтобы они игнорировались, когда программа была скомпилирована, но выполнена на верхнем уровне при запуске?
В идеале, мне бы хотелось, чтобы директивы были проверены типом, когда программа скомпилирована, даже если сама директива игнорируется, например.
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
Ваш совет - как обычно :) - очень ценный Мартин, это должен быть принятый ответ! –