λx. x K S K @はてな

このブログ内に記載された文章およびコードの著作権は,すべて Keisuke Nakano に帰属します.

スーパー pre 記法

スーパーpre記法というのが OCaml にも対応しているらしい. サポートされている言語が妙に多いけど,Vimシンタックスファイルから導出してるのかな. このリストとほぼ一致してるし.

それはさておき,せっかくなのでその記法を使って小ネタを一つ. unix.cma を読み込まずに OCaml の対話環境*1を起動し, Unix.time ();; と入力してみると,

        Objective Caml version 3.09.2

# Unix.time ();;
Reference to undefined global `Unix'
となる. これは「Unix なんて名前知らんよ」というメッセージな訳だが, 次のコマンドを入力してみると
# let () = Unix.time ();;
This expression has type float but is here used with type unit
となる. これは「Unix.time () の型は float だから unit として使えないよ」というメッセージである. つまり,Unix なんていう名前は知らんとかいいながら,型はちゃんと知っているという奇妙な現象が….

うーん,スーパー pre 記法は対話環境には向いてなかったようだ.

*1:対話環境でなくても同じことが起こる.