我可能以错误的方式思考顶级。作为项目的一部分,维护顶级指令集合的首选方式是什么?
有没有办法在 OCaml 源文件中包含顶级指令#install_printer
,以便在编译程序时忽略它们但在运行时由顶级执行?
理想情况下,即使指令本身被忽略,我也希望在编译程序时对指令进行类型检查,例如
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