在Ocaml中转置int列表列表

Mar*_*rko 2 ocaml

我希望对你们这些人来说这很容易.我在这个论坛找到了这个解决方案:

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列表列表.

谢谢你们!

cyg*_*gin 5

这就是多态性的含义.类型'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)

但我不明白你为什么会这样.