Commits

camlspotter committed 36da32e

fix

  • Participants
  • Parent commits e75423e

Comments (0)

Files changed (1)

 * OCaml ソースコード
 * OCaml コンパイラ一式
 
+この文章は OCaml 4.00.0 辺りを使って書かれている。あなたの使っている OCaml では例がそのまま
+動かないかもしれない。
+
 =======================
 肝に命じること
 =======================
 
 しかしこれは面倒だ。こんな場合のために P4 には ``$XXX: 式$`` という Anti-quotation 記法がある(これが全然ドキュメントされてないのだ…)。この記法を使うと上の式は次のように書き換えることができる::
 
-    let make_add_1 _loc x = <:expr< $int: string_of_int x$ + 1 >>  (* x の型は string。ほんとは int をそのまま埋め込みたいんだけど… *)
+    let make_add_1 _loc x = <:expr< $int: string_of_int x$ + 1 >>  (* x  string に変換…。ほんとは int をそのまま埋め込みたいんだけど… *)
 
 ``$int: x$`` は ``x`` は ``string`` なんだけどそれをよろしくコンテクストに合う AST に変更しちゃってください、という意味だと思えば良い。もっとかっこよく言うと「ホスト言語(Quote の外側)の値から、埋め込み言語(Quote の内側)の AST への変換子」だ。この変換子は(おそらく)次のものが使用できる::
 
 
 ここに Original syntax にこだわると Quotation で難儀する原因がある。
 **Original syntax の Quote は、いくつかのリストの形をした AST コンストラクタを最小の形で記述することができないのだ。** 
-これは治せるバグなのかどうかは判らない、というか調べたら多分戻ってこれないので調べてない。
+これは直せるバグで、もしかするとあなたの OCaml では既に直っているかもしれない。
+が、困ったことに他にも複数こういう場所がある。
 
 さて、これがすごく問題かというとそうでもない。
 パターンと同様、式においても Quotation ``<:module_type<sig $x$ end>>`` は