Ocaml 如何使用ppx导出数据类型的to_字符串方法
我如何使用ppx with为数据类型派生Ocaml 如何使用ppx导出数据类型的to_字符串方法,ocaml,ppx,ocaml-dune,Ocaml,Ppx,Ocaml Dune,我如何使用ppx with为数据类型派生to_string方法 例如,我试图使用派生数据类型的show.*方法。我有一个简单的main.ml文件,如下所示: open Core type foo = Bar | Baz [@@deriving show] let () = printf "%s\n" (show_foo Bar) (jbuild_version 1) (executables ((names (main)) (libraries (core ppx_derivi
to_string
方法
例如,我试图使用派生数据类型的show.*
方法。我有一个简单的main.ml
文件,如下所示:
open Core
type foo = Bar | Baz
[@@deriving show]
let () = printf "%s\n" (show_foo Bar)
(jbuild_version 1)
(executables
((names (main))
(libraries (core ppx_deriving))
(preprocess (pps (ppx_deriving.show)))))
(install
((section bin)
(files ((main.exe as my_foo)))))
我在同一目录中有一个jbuild
文件,如下所示:
open Core
type foo = Bar | Baz
[@@deriving show]
let () = printf "%s\n" (show_foo Bar)
(jbuild_version 1)
(executables
((names (main))
(libraries (core ppx_deriving))
(preprocess (pps (ppx_deriving.show)))))
(install
((section bin)
(files ((main.exe as my_foo)))))
运行jbuilderbuild
时,出现以下错误:
File "main.ml", line 6, characters 24-32:
Error: Unbound value show_foo
似乎jbuilder
没有运行ppx\u派生.show
预处理器,也没有生成show\u foo
函数
我使用的@@show
正确吗?我是否需要向我的jbuild
文件中添加一些内容才能使其正常工作?ppx\u派生
在使用jbuilder
时是否有问题?我应该使用不同的ppx库吗?我应该使用不同的构建系统吗?大多数ocamler如何处理此类构建系统问题
编辑:我正在使用OCaml版本4.04.2、jbuilder版本1.0+beta11和ppx_派生版本4.1。正如您在评论中所发现的,这需要在仅合并到版本4.2中的
ppx_派生中进行特殊处理
根本原因是jbuilder
使用ppx\u驱动程序
应用ppx重写器,而不是-ppx
标志。在发布有关jbuilder
的问题时,是否需要包含*.opam
文件?jbuilder
是否查看此文件以了解如何构建可执行文件?我刚刚尝试更新了jbuilder
和ppx\u-deriving
,现在似乎可以了。Myjbuilder
版本为,而ppx_派生版本为。使用上述两个软件包版本,此代码也适用于OCaml版本4.05.0
。