はぢめてのOCaml
というわけで、コードを貼り付けるテスト。
先日、grass.ml(id:ytqwerty:20080908#p1)で遊ぶためにOCamlをインストールしたので使ってみる。
そんで、これ↓
Scheme どう書く?的 - higepon blog
既にEmacs Lispで書いたんですけどね。まだOCamlはないな、よし。
let compact_number_list list = List.fold_right (fun n -> function (x :: y) :: p when x = n + 1 -> (n :: if y = [] then [x] else y) :: p | r -> [n] :: r) list [];; compact_number_list [1; 3; 4; 5; 6; 12; 13; 15];;
へぇー、fold_rightって便利ですね。