如何使用ppx与to_string一起导出数据类型的jbuilder方法
例如,我试图使用@@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_foojbuilder似乎没有运行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。
发布于 2017-08-28 13:04:54
正如您在注释中所发现的,这需要在ppx_deriving中进行特殊处理,该处理仅在版本4.2中合并。
其根本原因是jbuilder使用ppx_driver来应用ppx重写器,而不是-ppx标志。
https://stackoverflow.com/questions/45914171
复制相似问题