"The Whitespace Thing" for OCaml [OCaml]
OCaml のプリプロセッサに "The Whitespace Thing" for OCaml [1] というのがあるのを知った。
OCaml をやり始めてハマった部分は if の条件節がセミコロン区切りになるときに括弧または begin...end で囲まなければいけないというところで、これには今も何か違和感を感じる。
このプリプロセッサではインデントに意味を与えることでこのような括弧を排除することができるようになる。[1] のページの Code examples をみると、どれも右のほうが好ましい。まだ試していないけどパターンマッチのネストの問題にも有効なのかもしれない。
OCaml の camlp4 というプリプロセッサは―私にはまだ使い方がまるで理解できないけど―こうした文法の書き換えが行える程度に柔軟らしい(追記: よく読んでみたら現時点ではまだ camlp4 は使っていないようだ)。
でもこのようなプリプロセッサで自分好みの文法になるからといってそれを使うべきかどうかというのはちょっと迷う点だ。例えば C FAQ [2] に出てくる有名(?)な「#define begin { 」「#define end }」とやってることは差はないのではないか?という想いもよぎったりする。
[1] http://people.csail.mit.edu/mikelin/ocaml+twt/
[2] http://c-faq.com/cpp/slm.html
コメント 0