Wie kann ich to_string
Methoden für Datentypen mit ppx mit jbuilder herleiten? Zum Beispiel versuche ich @@deriving show
zu verwenden, um Methoden für einen Datentyp abzuleiten. Ich habe eine einfache main.ml
-Datei, die wie folgt aussieht:Wie abgeleitet to_string Methoden für Datentypen mit ppx
open Core
type foo = Bar | Baz
[@@deriving show]
let() = printf "%s\n" (show_foo Bar)
Ich habe eine jbuild
-Datei in demselben Verzeichnis, das wie folgt aussieht:
(jbuild_version 1)
(executables
((names (main))
(libraries (core ppx_deriving))
(preprocess (pps (ppx_deriving.show)))))
(install
((section bin)
(files ((main.exe as my_foo)))))
Als ich jbuilder build
laufen, ich folgende Fehlermeldung erhalten:
File "main.ml", line 6, characters 24-32:
Error: Unbound value show_foo
Es scheint wie jbuilder
laufen nicht den ppx_deriving.show
Präprozessor und erzeugt keine th e show_foo
Funktion.
Ist meine Verwendung von @@derive show
korrekt? Muss ich etwas zu meiner jbuild
Datei hinzufügen, damit es richtig funktioniert? Hat ppx_deriving
ein Problem mit jbuilder
zu arbeiten? Sollte ich eine andere ppx-Bibliothek verwenden? Sollte ich ein anderes Build-System verwenden? Wie gehen die meisten OCamler mit solchen Build-System-Problemen um?
bearbeiten: Ich bin mit OCaml Version 4.04.2, jbuilder Version 1.0 + beta11 und ppx_deriving Version 4.1.
Wenn Sie Fragen zu 'jbuilder' stellen, müssen Sie eine' * .opam' Datei hinzufügen. Spricht 'jbuilder' diese Datei an, um herauszufinden, wie die ausführbare Datei erstellt wird? – illabout
Ich habe gerade versucht, 'jbuilder' und' ppx_deriving' zu aktualisieren und jetzt scheint das zu funktionieren. Meine 'jbuilder' Version ist [1.0 + beta12] (https://github.com/janestreet/jbuilder/blob/1c85e646bc732189739e31e697b5e60bbd2221ba/CHANGES.md#10beta12-18082017) und' ppx_deriving' ist Version [4.2] (https: // github.com/ocaml-ppx/ppx_deriving/blob/7969277d1ec02517f441930e449d115d64a2a778/CHANGELOG.md # 42). – illabout
Mit den beiden obigen Paketversionen funktioniert dieser Code auch mit der OCaml-Version '4.05.0'. – illabout