週末に引越し、ということで本なんかを送ってしまいました。
読む本が無いので、前から手を出そうと思っていたOCamlに手を出してみました。
導入
とりあえずDebianにaptで放り込む。
- libcamomile-ocaml-data install
- libcamomile-ocaml-dev install
- libequeue-ocaml install
- libequeue-ocaml-dev install
- libextlib-ocaml-dev install
- libfileutils-ocaml-dev install
- libocamlnet-ocaml install
- libocamlnet-ocaml-dev install
- libpcre-ocaml install
- libpcre-ocaml-dev install
- ocaml install
- ocaml-base install
- ocaml-base-nox install
- ocaml-findlib install
- ocaml-interp install
- ocaml-nox install
こんな感じ。どうやらfindlibというライブラリが重要らしい。パッケージ管理系のライブラリなんですけど。
んでテンプレ的なのはこんな感じにしてみた。
- #use "topfind"
- #camlp4o
- #require "camlp4.extend"
- #require "extlib"
- #require "camomile"
- open ExtLib
練習
超特急: 一時間でわかるML超入門を見てから、Objective Caml 入門を読みながら、書いてみた。
普通に書きやすい。練習問題は・・・。なんていうか、SICP。普通に関数型言語として使うところまでやってみた。
日本語
EUCとUTFは大丈夫っぽい。ここらへんはCamomileというモジュールを使うらしい。とりあえず
- module Encoding = CamomileLibrary.Default.Camomile.CharEncoding
- module Enc = Encoding.Make (CamomileLibrary.UTF8)
- let unicode s = Enc.decode (Encoding.of_name "jauto") s;;
- let decode t n = Enc.encode (Encoding.of_name n) t;;
などとPythonみたいな関数を定義してみた。jautoでエンコーディングは自動的に判別してくれるらしい。コードをEUCで書いてUTF-8のコンソールに出力してみる。うんうん、ちゃんと日本語いけてる。ただ、UTF-8で書いたファイルでunicode "ああああ"ってしたら当然"ああああ"のままだと思うんだけど、ダメだった。なんでなんだろう。詳しい人いたら教えて欲しいです。
今までの感想
結構いい。モジュールシステムなんかはきっちりしてんなー、と思いました。オブジェクトシステムなんかが特徴だと思うんだけど、まだ触ってないんですよねえ。てゆーか詳しく解説しているところがすくないんで、どーしようかなあ。
あと、インタプリタの#require "camomile"みたいなのって、ネイティブコンパイラだとエラーになるんだけどこういうもんなんだろうか。つまりどっちか選びなさい、ってことでいいのかなあ・・・。ネイティブコンパイラでは無視してくれると一番ありがたいような気がするけど・・・