我正在用一本名为“真实世界 OCaml”的书学习 OCaml,到目前为止它运行良好。
我有 sexp 和 Sexplib 的问题。
# module type M = sig
# type t with sexp
# end;;
Run Code Online (Sandbox Code Playgroud)
这是一个教科书示例,但我在 utop 中有一个语法错误,with单词带有下划线。Core.Std开了。
谁能解释一下?我怀疑他们是否改变了语言语法。
小智 6
将“ with sexp”替换为[@@deriving sexp]; 这也需要ppx_sexp_conv重写器。或者,您也可以使用ppx_jane,它包括所有 Janestreet PPX 重写器(并在您使用corebuild命令时自动使用)。
# #use "topfind";;
# #require "core";;
# #require "ppx_sexp_conv";;
# open Core.Std;;
# module type M = sig type t [@@deriving sexp] end;;
module type M =
sig
type t
val t_of_sexp : Sexplib.Sexp.t -> t
val sexp_of_t : t -> Sexplib.Sexp.t
end
Run Code Online (Sandbox Code Playgroud)
解释 :
http://blogs.janestreet.com/extension-points-or-how-ocaml-is-becoming-more-like-lisp/