推導數據類型的to_string方法如何使用ppx和jbuilder推導to_string
數據類型的方法?如何使用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
預處理器,並且不會產生次e show_foo
功能。
我的使用@@derive show
是否正確?我需要添加一些東西到我的jbuild
文件,讓它正常工作? ppx_deriving
在使用jbuilder
時出現問題?我應該使用不同的ppx庫嗎?我應該使用不同的構建系統嗎?大多數OCamlers如何處理這些構建系統問題?
編輯:我使用OCaml的版本4.04.2,JBuilder的版本1.0 + beta11和ppx_deriving 4.1版本。
當張貼有關'jbuilder'的問題,既要包括'* .opam'文件? 'jbuilder'看這個文件來弄清楚如何構建可執行文件嗎? – illabout
我只是想更新'jbuilder'和'ppx_deriving'現在這似乎工作。我的'jbuilder'版本是[1.0 + beta12](https://github.com/janestreet/jbuilder/blob/1c85e646bc732189739e31e697b5e60bbd2221ba/CHANGES.md#10beta12-18082017)和'ppx_deriving'是版本[4.2](https://開頭github.com/ocaml-ppx/ppx_deriving/blob/7969277d1ec02517f441930e449d115d64a2a778/CHANGELOG.md#42)。 – illabout
使用上述兩種封裝版本,該代碼也可以與OCaml的版本'4.05.0'。 – illabout