これが私の元のコードです。
let rec reverse l =
match l with
| [] -> []
| (h::t) -> (reverse t) :: h
cons::
演算子は、左側の引数として要素を受け取り、右側の引数としてリストを受け取ります。ここでは、機能しない反対のことを行います。
リストの末尾の要素に要素を追加する正しい方法は、リストの連結を使用することです。
let rec reverse l =
match l with
| [] -> []
| h :: t -> (reverse t) @ [h]
ただし、そのコードは最適ではなく、末尾再帰にしたい場合があります。