> 畳み込み関数がよくわからないので
「(出典元)でこういう説明がされているがここがわからない」というような書き方でお願いします。
さもないとそのへんに転がっている説明を焼き直すぐらいしかできません:
[List](https://ocaml.jp/archive/ocaml-manual-3.06-ja/libref/List.html)
> List.fold_right f [a1; ...; an] b は f a1 (f a2 (... (f an b) ...)) です。末尾再帰になっていません。
これを読んでどこがわからないですか?
1let max_of_list cmp xs =2let init =List.hd x in(* 初期値はリストの最初の要素とします *)3List.fold_right (fun acc x ->4(* cmp a b は a < b なら負数、a > b なら正数、a = b なら 0 を返す関数 *)5if(cmp acc x)<06then x
7else acc
8) xs init