Odwracanie listy w Ocaml

Jak odwrócić nawet podlistę listy, jeśli założymy, że zliczamy elementy z 0. Chcę, aby rozwiązanie zostało „zakodowane ręcznie”. Mam duży problem z tym zadaniem.

Na przykład:

Function([[1;2;3] ; [2;3] ; [1;2;3] ; [5;6;7]])

zwraca:

([[3;2;1] ; [2;3] ; [3;2;1] ; [5;6;7]])

Stworzyłem już funkcję, która odwraca pojedynczą listę:

let rev =
  let rec rev_append acc l =
    match l with
      [] -> acc
    | h::t -> rev_append (h::acc) t in
  fun l -> rev_append [] l;;

Ale teraz utknąłem.

questionAnswers(3)

yourAnswerToTheQuestion