OCaml顶级语法扩展

kos*_*hei 14 syntax ocaml camlp4

我一般不知道如何实现这一点,但为了清楚起见,我会特别询问一个例子:

Sexplib看起来很有趣.我想玩它.我已经下载了它,安装得很好(我很确定,无论如何)等等.我想在顶层使用"with sexp"语法扩展.我该怎么做呢?我发现它使用的所有示例都假设您已经知道如何使用语法扩展进行顶层和/或编译.

我最好的拍摄是这样的:

ocamlmktop -I +site-lib/sexplib -pp "camlp4 -I +site-lib/sexplib pa_sexp_conv.cma" -o sexplib-top
Run Code Online (Sandbox Code Playgroud)

当我运行这个toplevel时,我可以open Sexplib很好,但是当我尝试使用with sexp语法扩展时,我得到一个语法错误.

ygr*_*rek 15

已经是二十一世纪 - 使用ocamlfind:

        Objective Caml version 3.11.2

# #use "topfind";;
- : unit = ()

# #camlp4o;;
/usr/lib/ocaml/dynlink.cma: loaded
/usr/lib/ocaml/camlp4: added to search path
/usr/lib/ocaml/camlp4/camlp4o.cma: loaded
    Camlp4 Parsing version 3.11.2

# #require "sexplib.syntax";;
/usr/lib/ocaml/unix.cma: loaded
/usr/lib/ocaml/bigarray.cma: loaded
/usr/lib/ocaml/nums.cma: loaded
/usr/lib/ocaml/num-top: added to search path
/usr/lib/ocaml/num-top/num_top.cma: loaded
/usr/lib/ocaml/sexplib: added to search path
/usr/lib/ocaml/sexplib/sexplib.cma: loaded
/usr/lib/ocaml/type-conv: added to search path
/usr/lib/ocaml/type-conv/pa_type_conv.cmo: loaded
/usr/lib/ocaml/sexplib/pa_sexp_conv.cmo: loaded

# type t = { x : int; y : float; } with sexp;;
type t = { x : int; y : float; }
val t_of_sexp__ : Sexplib.Sexp.t -> t = <fun>
val t_of_sexp : Sexplib.Sexp.t -> t = <fun>
val sexp_of_t : t -> Sexplib.Sexp.t = <fun>
Run Code Online (Sandbox Code Playgroud)

  • 好吧,给我画橙色,叫我苏珊.谢谢.如果在线或印刷的任何学习资源,在任何地方,任何地方都曾提到这一点,那将是非常有用的. (4认同)
  • 我还需要"打开Sexplib.Std ;;" 使它工作 (3认同)