ついでにネタ振り。
末尾再帰のスタイルはどちらがお好み?
#light
// val sum : int list -> int
let sum1 l =
let rec sum' l v =
match l with
| [] -> v
| h::t -> sum' t (v + h)
sum' l 0
let sum2 =
let rec sum' v = function
| [] -> v
| h::t -> sum' (v + h) t
sum' 0
要は、sum' の引数の順番の問題なのですが・・・。