更新-解決策
彼の助けをくれたjacobmのおかげで、私は解決策を思いついた。
// Folding Recursion
let reverse_list_3 theList =
List.fold_left (fun element recursive_call -> recursive_call::element) [] theList;;
私はOCaml(クラス用)での再帰のさまざまな方法について学び、いくつかの演習では、さまざまな再帰スタイルを使用してリストを逆にする関数を書いています。
// Forward Recursion
let rec reverse_list_forward theList =
match theList with [] -> [] | (head::tail) -> (reverse_list_1 tail) @ [head];;
// Tail Recursion
let rec reverse_list_tail theList result =
match theList with [] -> result | (head::tail) -> reverse_list_2 tail (head::result);;
今、私はを使って逆関数を書き込もうとしていますList.fold_left
が、行き詰まっていて理解できません。折りたたみを使用してこの逆関数をどのように記述しますか?
また、関数型プログラミング、さまざまなタイプの再帰、高階関数などについての参考資料があれば、リンクをいただければ幸いです:)