ディレクトリ内ファイルの取得
let readdir path = let result = ref [] and dir = Unix.opendir path in let _ = try while (true) do result := (Unix.readdir dir)::(!result); done with End_of_file -> () in Unix.closedir dir; ! result;;
なんだコレ。ほんとに関数型言語か?破壊的代入に例外を使った大域脱出、さらには再帰じゃなくてループを使ってる。
いや、まあ書いたのは俺なんだけどさ。なんか美しくない。
たぶん、用意されている関数が低レベルすぎるのが原因だ、うん。逆を言えば、haskellとかだったらCでラッパを書くべき部分だ、たぶん。