Here is a nice F# transpose function:
let rec transpose = function | (_::_)::_ as M -> List.map List.head M :: transpose (List.map List.tail M) | _ -> []
Source: http://stackoverflow.com/questions/3016139/help-me-to-explain-the-f-matrix-transpose-function