私的OCaml
YTさんとこなどを見て、私的に OCaml に思うところを。(以下完全に私見というか、私に OCaml がどう見えているか、です)
OCaml はまぁいい言語だと思います。私的には基本的にいい言語だと思うのですが、ウマは合わない。ゴルフ弱いし。まず、とりまく環境から。
- 不安定感。コンパイル通ればバグは無い、と断言するもののなんかよく End_of_file とかいう例外が飛んで異常終了したりします。あと個人的に例外の止めかたを知らないので、私にとって例外==終了です。コンパイルなんかしなくても絶対に異常終了しない Brainf*ck と比べてしまうと、どうしても不安。とある理由で非常に重宝していますが。
- 高速。 Brainf*ck に比べると格段に速く動作します。コンパイルも速いし。ただ Brainf*ck JIT コンパイラは前 Xbyak で書いたヤツの方が格段に速かった。
- デバッグなど。 Printf.printf という名前でデバッグツールが付属していて便利です。少し長いのが難点かも。
- プロファイルなど。本当に効率を気にするならやっぱ C++ を選んでしまうのでした。 Ruby とかと比べたら格段に書きやすさ落ちるし、使いどころに困るというのが正直なところですね。
- OCamlMakefile はよい。
- 仕様コロコロ変わるプリプロセッサ camlp4 。今もかは知らない。たぶん永久に TODO 。
- たしかに好きな実行法を選択できる。
- 標準ライブラリは割とただごとではないセンスの悪さだったような気がしてたんですが遠い記憶なのであまり覚えてないというのが正直なところ。ただ OCaml は自身を実装するためにコンパイラを書くための機能ばかり標準ライブラリに入ると先日聞いたので、まぁたぶん YT さんはコンパイラ書いてるんだと思う。あと全部長すぎ。 String. とかつらい(ゴルフ的な意味で)。
- 普通に動作環境多い。
- ゴルフに IDE はいらない。
言語としては
- GC はよく知らんけど。
- 型推論。ゴルフの敵。 Haskell と違って int と float がめんどいので float を使うコードは絶対に OCaml で書いちゃいけないと思う。
- 多相。すばらしいと思う。
- 関数内関数とかローカルスコープで let するとバイト数が。
- 演算子は float が許せない。配列と文字列が思い出せない。配列リテラルとリストリテラルが書けない。 Haskell の $ が欲しいような。
- Modula とか知らない。YTさんが何書いてるかもうさっぱりわからない。
- 総じてネタとマジが混じっててどうでもいい文章になった。ごめんなさい。引用元の引用元のサイトはまだ見てないので、後でゆっくり眺めて比較してニヤニヤしようかと思う。
あとパターンマッチもコンパイラ書くための機能だよねと思ったりとか。あと複数行文字列はすばらしいですね。 Quine 的な意味で。