Reversão de lista em Ocaml

Como reverter até sublistas de uma lista se assumirmos que contamos elementos de 0. Quero que a solução seja "codificada manualmente". Eu tenho um grande problema com esta tarefa.

Por exemplo:

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

retorna:

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

Eu já criei uma função que inverte uma única lista:

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;;

Mas agora estou preso.

questionAnswers(3)

yourAnswerToTheQuestion