There is a Matrix transpose function:
let rec transpose = function | (_::_)::_ as M -> List.map List.head M :: transpose (List.map Li
This may also help you:
Understanding a Matrix transposition Function in Haskell
It is a very similar function in a similar programming language (Haskell).