Как мне настроить 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;;
Другие вопросы по тегам