为什么用 sexp return 注释类型会导致 Unbound value int_of_sexp?

jrk*_*jrk 6 ocaml camlp4

使用sexplib语法扩展自动生成一个类型的序列化代码,如网上很多简单例子所示:

open Sexplib
type t = { foo : int; bar : string; } with sexp
let v = { foo = 3; bar = "baz"; } in
sexp_of_t v
Run Code Online (Sandbox Code Playgroud)

无法编译,使用Error: Unbound value int_of_sexp.

jrk*_*jrk 7

在最新版本的 sexplib 中,您需要首先open Sexplib.Std,它在生成的代码的命名空间中包含标准类型序列化例程。

所以:

open Sexplib
open Sexplib.Std (* newly essential import *)
type t = { foo : int; bar : string; } with sexp
let v = { foo = 3; bar = "baz"; } in
sexp_of_t v
Run Code Online (Sandbox Code Playgroud)

作品。