首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ppx派生数据类型的to_string方法

如何使用ppx派生数据类型的to_string方法
EN

Stack Overflow用户
提问于 2017-08-28 07:50:19
回答 1查看 655关注 0票数 4

如何使用ppx与to_string一起导出数据类型的jbuilder方法

例如,我试图使用@@deriving show来派生数据类型的show_*方法。我有一个简单的main.ml文件,如下所示:

代码语言:javascript
复制
open Core

type foo = Bar | Baz
  [@@deriving show]

let () = printf "%s\n" (show_foo Bar)

我在同一个目录中有一个jbuild文件,如下所示:

代码语言:javascript
复制
(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时,会得到以下错误:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-28 13:04:54

正如您在注释中所发现的,这需要在ppx_deriving中进行特殊处理,该处理仅在版本4.2中合并。

其根本原因是jbuilder使用ppx_driver来应用ppx重写器,而不是-ppx标志。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45914171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档