如何使用 ppx 和jbuilderto_string
派生数据类型的方法?
例如,我正在尝试使用为数据类型@@deriving show
派生show_*
方法。我有一个main.ml
看起来像这样的简单文件:
open Core
type foo = Bar | Baz
[@@deriving show]
let () = printf "%s\n" (show_foo Bar)
我jbuild
在同一目录中有一个文件,如下所示:
(jbuild_version 1)
(executables
((names (main))
(libraries (core ppx_deriving))
(preprocess (pps (ppx_deriving.show)))))
(install
((section bin)
(files ((main.exe as my_foo)))))
当我运行时jbuilder build
,我收到以下错误:
File "main.ml", line 6, characters 24-32:
Error: Unbound value show_foo
似乎jbuilder
没有运行ppx_deriving.show
预处理器,也没有生成show_foo
函数。
我的用法@@derive show
正确吗?我是否需要在我的jbuild
文件中添加一些内容才能使其正常工作?ppx_deriving
与 合作有问题吗jbuilder
?我应该使用不同的 ppx 库吗?我应该使用不同的构建系统吗?大多数 OCamlers 如何处理这类构建系统问题?
编辑:我使用的是 OCaml 版本 4.04.2、jbuilder 版本 1.0+beta11 和 ppx_deriving 版本 4.1。