在 OCaml utop 中使用 s 表达式

Yix*_*Liu 6 ocaml

我正在用一本名为“真实世界 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/