2011-09-15 20 views
14

non so come eseguire questa in generale, ma io chiedere informazioni su un caso, in particolare, per chiarezza:OCaml toplevel con le estensioni di sintassi

Sexplib sembra interessante per me. Voglio giocarci. L'ho scaricato, installato correttamente (ne sono abbastanza sicuro, comunque), ecc. Voglio usare l'estensione della sintassi "con sexp" in un toplevel. Come potrei fare questo? Tutti gli esempi che ho trovato sul suo utilizzo presumono che tu sappia già come eseguire il toplevel e/o compilare con le estensioni di sintassi.

mio colpo a che la cosa migliore era qualcosa di simile:

ocamlmktop -I +site-lib/sexplib -pp "camlp4 -I +site-lib/sexplib pa_sexp_conv.cma" -o sexplib-top 

Quando ho eseguito questo primo livello, posso open Sexplib bene, ma quando provo utilizzando l'estensione with sexp sintassi, ottengo un errore di sintassi.

risposta

15

È XXI secolo già - utilizzare 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> 
+4

Beh, Paint Me arancione e mi chiamano Susan. Grazie. Sarebbe davvero di grande aiuto se qualche risorsa di apprendimento online o stampata, ovunque, lo abbia mai menzionato, mai. – koschei

+0

Wow, divertiti con questa espressione idiomatica :) Ecco un articolo su findlib (in russo) - https://github.com/camlunity/kamlo_wiki/blob/master/Findlib.md - espanso con questo esempio – ygrek

+0

Cosa significa # camlp4o ;; sopra fare? Quando accedo quella parte di cui sopra non vedo alcuna lista di moduli caricati - ma non c'è nessun errore. Non sembra funzionare. – aneccodeal

Problemi correlati