OCamlに手を出す

週末に引越し、ということで本なんかを送ってしまいました。

読む本が無いので、前から手を出そうと思っていたOCamlに手を出してみました。

導入

とりあえずDebianにaptで放り込む。

 code
  1. libcamomile-ocaml-data install
  2. libcamomile-ocaml-dev install
  3. libequeue-ocaml install
  4. libequeue-ocaml-dev install
  5. libextlib-ocaml-dev install
  6. libfileutils-ocaml-dev install
  7. libocamlnet-ocaml install
  8. libocamlnet-ocaml-dev install
  9. libpcre-ocaml install
  10. libpcre-ocaml-dev install
  11. ocaml install
  12. ocaml-base install
  13. ocaml-base-nox install
  14. ocaml-findlib install
  15. ocaml-interp install
  16. ocaml-nox install
  17.  

こんな感じ。どうやらfindlibというライブラリが重要らしい。パッケージ管理系のライブラリなんですけど。

んでテンプレ的なのはこんな感じにしてみた。

 code
  1. #use "topfind"
  2. #camlp4o
  3. #require "camlp4.extend"
  4. #require "extlib"
  5. #require "camomile"
  6.  
  7. open ExtLib
  8.  

練習

超特急: 一時間でわかるML超入門を見てから、Objective Caml 入門を読みながら、書いてみた。

普通に書きやすい。練習問題は・・・。なんていうか、SICP。普通に関数型言語として使うところまでやってみた。

日本語

EUCとUTFは大丈夫っぽい。ここらへんはCamomileというモジュールを使うらしい。とりあえず

 code
  1. module Encoding = CamomileLibrary.Default.Camomile.CharEncoding
  2. module Enc = Encoding.Make (CamomileLibrary.UTF8)
  3. let unicode s = Enc.decode (Encoding.of_name "jauto") s;;
  4. let decode t n = Enc.encode (Encoding.of_name n) t;;
  5.  

などとPythonみたいな関数を定義してみた。jautoでエンコーディングは自動的に判別してくれるらしい。コードをEUCで書いてUTF-8のコンソールに出力してみる。うんうん、ちゃんと日本語いけてる。ただ、UTF-8で書いたファイルでunicode "ああああ"ってしたら当然"ああああ"のままだと思うんだけど、ダメだった。なんでなんだろう。詳しい人いたら教えて欲しいです。

今までの感想

結構いい。モジュールシステムなんかはきっちりしてんなー、と思いました。オブジェクトシステムなんかが特徴だと思うんだけど、まだ触ってないんですよねえ。てゆーか詳しく解説しているところがすくないんで、どーしようかなあ。

あと、インタプリタの#require "camomile"みたいなのって、ネイティブコンパイラだとエラーになるんだけどこういうもんなんだろうか。つまりどっちか選びなさい、ってことでいいのかなあ・・・。ネイティブコンパイラでは無視してくれると一番ありがたいような気がするけど・・・

07.27.08/12am

About

Author:yuin(http://inforno.net/)

文学部文化学科卒という生粋の文系趣味プログラマ。

主にRuby、Javascript、PHP、JAVA,Python,C,Scala,Schemeなどを使っています。今はPythonな感じかもしれない。今後作曲活動なども復活するかもしれない。

Pages