はぢめての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って便利ですね。