2011-09-15 5 views
14

私は、一般的にこれを実現する方法を知りませんが、私は、明確にするために、特に約1インスタンスを頼むよ:OCamlのトップレベルは

Sexplibは、私には面白そう。私はそれと一緒に遊びたいです。私はそれをダウンロードして、ちょうどいい(とにかく)確かにインストールされています。トップレベルでは "with sexp"構文拡張を使いたいと思います。これをどうやってやりますか?私が使用しているすべての例は、あなたが既にトップレベルを作る方法や構文拡張を使ってコンパイルする方法を知っていることを前提としています。これで

私の最高のショットは、このようなものだった:

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

私はこのトップレベルを実行すると、私はopen Sexplibうまくすることができますが、私はwith sexp構文拡張を使用しようとすると、私は構文エラーを取得します。 -

答えて

15

それは21世紀にはすでには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

まあ、私はオレンジ色のペイントとスーザン私を呼び出します。ありがとうございました。オンラインでも印刷でも、どこでも、これまで言われている学習リソースがあれば、本当に役に立ちます。 – koschei

+0

うわー、この慣用的な表現を楽しんだ:) findlib(ロシア語)に関する記事 - https://github.com/camlunity/kamlo_wiki/blob/master/Findlib.md - この例で展開 – ygrek

+0

#camlp4oとは何ですか? ;;上記は何ですか?上記の部分を入力すると、ロードされたモジュールの一覧は表示されませんが、エラーもありません。うまくいかないようです。 – aneccodeal

関連する問題