gpt4 book ai didi

ocaml - 如何使用 ppx 为数据类型派生 to_string 方法

转载 作者:行者123 更新时间:2023-12-01 13:31:05 30 4
gpt4 key购买 nike

我如何推导 to_string使用带有 jbuilder 的 ppx 的数据类型的方法?

例如,我正在尝试使用 @@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 版。

最佳答案

正如您在评论中发现的,这需要在 ppx_deriving 中进行特殊处理。仅在 4.2 版中合并。

根本原因是jbuilder用途 ppx_driver应用 ppx 重写器而不是 -ppx旗帜。

关于ocaml - 如何使用 ppx 为数据类型派生 to_string 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45914171/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com