jbuilderのppxを使用してデータ型に対してto_string
メソッドを導出するにはどうすればよいですか?ppxを使用してデータ型のto_stringメソッドを派生する方法
たとえば、@@deriving show
を使用して、データ型にshow_*
メソッドを派生させようとしています。私はjbuilder build
を実行すると、私は次のエラーを取得する
(jbuild_version 1)
(executables
((names (main))
(libraries (core ppx_deriving))
(preprocess (pps (ppx_deriving.show)))))
(install
((section bin)
(files ((main.exe as my_foo)))))
:私はこのようになり、同じディレクトリにあるjbuild
ファイルを持っている
open Core
type foo = Bar | Baz
[@@deriving show]
let() = printf "%s\n" (show_foo Bar)
:私はこのようになりますシンプルな
main.ml
ファイルを持っています:
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ライブラリを使用する必要がありますか?別のビルドシステムを使用すべきですか?ほとんどのOCamlerは、こうした種類のビルドシステムの問題にどのように対処していますか?
編集:私は、JBuilderのバージョン1.0 + beta11をOCamlのバージョン4.04.2を使用して、バージョン4.1をppx_derivingています。
「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
上記の2つのパッケージバージョンを使用して、このコードはOCamlバージョン '4.05.0'でも動作します。 – illabout