Как мне настроить ocamlinit, чтобы ppx работал?
Это мой ocamlinit:
(* Added by OPAM. *)
let () =
try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
with Not_found -> ()
;;
(* ## added by OPAM user-setup for ocamltop / base ## 3ec62baf6f9c219ae06d9814069da862 ## you can edit, but keep this line *)
#use "topfind";;
(* ## end of OPAM user-setup addition for ocamltop / base ## keep this line *)
#thread;;
(* #ppx "ppx-jane -as-ppx";; *)
#require "ppx_jane";;
#require "core.top";;
#require "async";;
#require "core_extended";;
open Core.Std;;
С этим точно, я получаю это в утопе
utop # type test = char list [@@deriving show];;
Error: Cannot locate deriver show
Если я использую строку, начинающуюся с #ppx
вместо #require "ppx_jane"
Я получаю эту ошибку
utop # type test = char list [@@deriving show];;
Error: ppx_type_conv: 'show' is not a supported type type-conv generator
Как мне настроить ocamlinit для использования [@@deriving show]
?
2 ответа
Мне удалось заставить его работать, используя #require "ppx_deriving.show";;
(с или без #require "ppx_jane";;
).
В дополнение к предложению Пьера я обнаружил, что мне нужна строка с ppx_jane
,
Также я использовал #require "ppx_deriving.std"
вместо просто ppx_deriving.show
получить ord
и все остальное тоже.
Вот мой полный ocamlinit
(* Added by OPAM. *)
let () =
try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
with Not_found -> ()
;;
(* ## added by OPAM user-setup for ocamltop / base ## 3ec62baf6f9c219ae06d9814069da862 ## you can edit, but keep this line *)
#use "topfind";;
(* ## end of OPAM user-setup addition for ocamltop / base ## keep this line *)
#thread;;
#require "ppx_jane";;
#require "core.top";;
#require "async";;
#require "core_extended";;
#require "ppx_deriving.std";;
open Core.Std;;