Reversión de la lista en Ocaml

Cómo revertir incluso las sublistas de una lista si asumimos que contamos los elementos de 0. Quiero que la solución se "codifique manualmente". Tengo un gran problema con esta tarea.

Por ejemplo:

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

devoluciones:

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

Ya creé una función que invierte una sola 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;;

Pero ahora estoy atascado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta