Ich folge Real World OCaml, um mit der Sprache zu beginnen, und an einem Punkt, ich bin es, s-Ausdrücke in einer Modul-Signatur zu verwenden. Hier ist meine mli
Datei:Kann s-Ausdrücke nicht verwenden
open Core.Std
(** Configuration type for query handlers *)
type config with sexp
(** Name of the query handler *)
val name : string
(** Query handler abstract type *)
type t
(** Create a query handler from an existing [config] *)
val create : config -> t
(** Evaluate a query, where both input and output an s-expressions. *)
val eval : t -> Sexp.t -> Sexp.t Or_error.t
Aber, wenn eine Implementierung dieser Schnittstelle kompilieren, erhalte ich folgende Fehlermeldung:
File "Query_Handler.mli", line 4, characters 12-16:
Error: Syntax error
Command exited with code 2.
So öffnete ich utop
with sexp
auf ein einfacheres Beispiel, um zu versuchen:
module type Test = sig
type t with sexp
end;;
Aber ich bekomme den folgenden Fehler:
Error: Parse Error: "end" expected after [sig_items] (in [module type])
Allerdings ist sexplib
installiert und weder das Buch noch meine Suche im Internet erwähnen irgendwelche "Voraussetzungen" für die Verwendung dieser Syntax.
Ich fühle mich wie ich etwas vermisse. Irgendeine Idee? :(
. Das mit Sexp-Syntax beruht auf einer Camlp4-Erweiterung - das sollte in dem Buch irgendwo vor der Verwendung erklärt werden.Der moderne Weg, dies zu tun wäre, den ppx-Erweiterungsmechanismus stattdessen zu verwenden.Ich glaube, Jane Street haben alles, was notwendig ist freigegeben auch als ppx Version, dies ist nicht erklärbar d im Buch, da es eine neue Sprachfunktion ist. Ich weiß nicht, wo ich nachschlagen soll - Google ist dein Freund, denke ich. – user3240588
Zeigen Sie, wie Sie es kompilieren, welchen Befehl verwenden Sie? –
Wenn Sie mehr Informationen darüber möchten, ist dies Kapitel 10: * First-Class-Module *. Die mli heißt 'Query_Handler.mli' und die' ml', 'Query_Handler.ml'. Ich kompiliere es mit 'corebuild Query_Handler.native'. Außerdem benutze ich ArchLinux und das Paket 'camlp4' ist installiert. – RichouHunter