我正在跟随Real World OCaml学习这门语言,其中有一点是在模块签名中使用s表达式。以下是我的mli
文件:
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
但是,在编译该接口的实现时,我遇到了以下错误:
File "Query_Handler.mli", line 4, characters 12-16:
Error: Syntax error
Command exited with code 2.
因此,我打开了 utop
并尝试在一个更简单的例子上使用 with sexp
:
module type Test = sig
type t with sexp
end;;
但是我得到了以下错误:
Error: Parse Error: "end" expected after [sig_items] (in [module type])
然而,sexplib
已经安装,书籍和我在互联网上的搜索也没有提到使用这种语法需要任何“先决条件”。
我感觉好像漏掉了什么。有什么想法吗?:(
Query_Handler.mli
,而ml文件名为Query_Handler.ml
。我使用corebuild Query_Handler.native
进行编译。此外,我使用的是ArchLinux,并安装了camlp4
软件包。 - Richard-Degenne