Объединение столбца списков в OCaml

Я хочу существенно транспонировать матрицу в OCaml (без использования рекурсии или каких-либо циклов)

Например, если у меня есть следующая матрица:[[1;2];[3;4]],
Я хочу получить вывод[[1;3];[2;4]].

На данный момент я разбил исходную матрицу на отдельные столбцы:

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

Я вызываю эту вспомогательную функцию из другой функции:

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

Я думал, что это объединит все столбцы так, как я хочу, а закончился следующим выводом:[[1];[2];[3];[4]].

Ответы на вопрос(2)

Ваш ответ на вопрос