Ocaml の折り方に関する素朴な質問: Map.make.fold が List.fold_left ではなく List.fold_right のように設計されている理由を説明してください。fold_right は tail_recursive ではありませんか? Map.make.fold_left と Map.make.fold_right があったはずですか?
type of Map.make.fold
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
type of List.fold_left
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a
type of List.fold_right
val fold_right : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b