MetaOCaml 学習帳

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 はメタなのに魅かれないような。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h