我希望对你们这些人来说这很容易.我在这个论坛找到了这个解决方案:
let rec transpose list = match list with
| [] -> []
| [] :: xss -> transpose xss
| (x::xs) :: xss ->
(x :: List.map List.hd xss) :: transpose (xs :: List.map List.tl xss)
Run Code Online (Sandbox Code Playgroud)
这是列表列表的转置,效果很好.
现在我需要相同的这个,但不是将'列表列表转置到'列表列表,以将列表列表转换为int列表列表.
谢谢你们!
这就是多态性的含义.类型'a可以是任何类型,因此您找到的解决方案同样适用int list list.
如果你真的想要一个类型为的函数int list list -> int list list,你总是可以使用类型注释强制它:
let int_transpose : int list list -> int list list = transpose
Run Code Online (Sandbox Code Playgroud)
但我不明白你为什么会这样.