Combinando uma coluna de listas no OCaml

Quero essencialmente transpor uma matriz no OCaml (sem usar recursão ou qualquer tipo de loop)

Por exemplo, se eu tiver a seguinte matriz:[[1;2];[3;4]],
Eu quero ter a saída de[[1;3];[2;4]].

O que fiz até agora é dividir a matriz original em colunas individuais:

//function that separates into cols
let separate li =
    List.map (fun x -> [x]) li;;

Eu chamo essa função auxiliar de outra função:

let trans x = 
    List.concat (List.map separate li) x;;

Eu estava pensando que isso combinaria todas as colunas da maneira que eu queria, mas terminou com a seguinte saída:[[1];[2];[3];[4]].

questionAnswers(2)

yourAnswerToTheQuestion