頭の悪いFormat
参考(元ネタ)→http://d.hatena.ne.jp/soutaro/20060506/1146925290
トップレベルで式を評価しても
open Format;; let print_utf8string x = print_string "utf8_of_string \""; print_string (string_of_utf8 x); print_string "\"";; #install_printer print_utf8string;;
# utf8_of_string "123";; - : Utf.utf8_string = utf8_of_string "123"
そして、これはFormatモジュールはなんのためにあるのか、という問いの答えにもなります。
短い答え:open Format;;しておかないと#install_printerしたやつが遅延評価されるから。(←嘘)
でも正直Formatモジュールのわけわからん作りに付き合うよりは自分で整形した方が早いと思うので、この程度の理解でいいかと……。
最大の問題は、#付きディレクティブ(←正しくは何て言うのか知らない)がインタプリタは理解できてもコンパイルできないので、#loadしたら自動で#install_printer済み状態、という風にはできない、つー点ですね。「対話環境にのみ存在する関数」とかにしといてくれたら……。