List.fold_left は左から,List.fold_right は右からたたみ込む。
# List.fold_left (fun x y -> "(" ^ x ^ "," ^ y ^ ")") "A" ["B";"C";"D"];; - : string = "(((A,B),C),D)" # List.fold_right (fun x y -> "(" ^ x ^ "," ^ y ^ ")") ["A";"B";"C"] "D";; - : string = "(A,(B,(C,D)))"
引数の順番が違うので,ちょっと注意が必要。
# List.fold_left;; - : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a = <fun> # List.fold_right;; - : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b = <fun>