OCaml は小学生までかなぁと思ったので立派な中二になるべく。とりあえず unless でも書いてみる。
let unless cond no = if not cond then no else .< () >. let _ = .! (unless true .<print_string "hello true\n">.); .! (unless false .<print_string "hello false\n">.);
読みにくいなぁ。ちょっとした構文拡張に使うってのは読みにくすぎてどうしようもないからやはり DSL なんだろうなぁ。
こう、なんかですね。
i@u ~/test/ocaml> rlwrap metaocaml MetaOCaml version 3.09.1 alpha 030 # .< 1 >.;; - : ('a, int) code = .<1>.
とかしてわかることはなんか、
type code = ??? of ('a, 'b)
みたいな定義なわけじゃないですか。 ??? の部分がわかればパターンマッチで取り出せそうな気もするんだけど無理なのだろうか。いやなんか違うな。 int list も別に int は取り出せないし。
なんか MetaOCaml はメタなのに魅かれないような。