camlp5 †

  • http://pauillac.inria.fr/~ddr/camlp5/
  • OCaml 3.09 までの camlp4 が名前をcamlp5と名前を変えて配布されている
    • OCaml 3.10 以降の camlp4 はそれまでの camlp4 と全く互換性がないため
    • Coq 等で使われている
    • 現行の camlp4 は undocumentedな部分が多いため camlp4 の代わりにこちらを使うのがよいかもしれない

チュートリアル †

とりあえず使ってみる †

  • hello.ml を構文解析して、そのままpretty printする
    camlp5 pr_o.cmo pa_o.cmo hello.ml
    • pr_* は pretty printer, pa_* は パーザ
    • *_o は original syntax, *_r は revised syntax

q_MLast.cmo †

ML構文のquotationを有効にする構文拡張?

camlp5 q_MLast.cmo pr_o.cmo pa_o.cmo test.ml

疑問 †

パス式の扱い †

  • 次の2つのパス式F.f, C.cの表現が異なる
    • C.c x (xへの関数C.cの適用)
    • new C.c (クラスC.cのnew)
  • それぞれ次のようになる:
    MLast.ExAcc (loc, MLast.ExUid (loc, "F"), MLast.ExLid (loc, "f"))
    MLast.ExNew (loc, ["C"; "c"])
    • 前者は ExAcc? で UidとLidを結合, 後者は string list なぜ?
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS