syntax - OCaml toplevel con extensiones de sintaxis
camlp4 (1)
Ya es del siglo XXI: usa 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>
No sé cómo lograr esto en general, pero voy a preguntar acerca de una instancia en particular para mayor claridad:
Sexplib me parece interesante. Quiero jugar con eso. Lo descargué, lo instalé muy bien (estoy bastante seguro, de todos modos), etc. Quiero usar la extensión de sintaxis "con sexp" en un topevel. ¿Cómo voy a hacer esto? Todos los ejemplos que he encontrado de su uso asumen que ya sabes cómo hacer el nivel superior y / o compilar con las extensiones de sintaxis.
Mi mejor oportunidad fue algo como esto:
ocamlmktop -I +site-lib/sexplib -pp "camlp4 -I +site-lib/sexplib pa_sexp_conv.cma" -o sexplib-top
Cuando ejecuto este toplevel, puedo open Sexplib
muy bien, pero cuando intento usar la extensión de sintaxis with sexp
, open Sexplib
un error de sintaxis.