在Ocaml中转置int列表列表

时间:2013-04-11 09:57:19

标签: 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)

这是列表列表的转置,效果很好。

现在我需要相同的这个,但不是转换一个'列表列表到'列表列表将int list list转换为int list list。

谢谢大家!

1 个答案:

答案 0 :(得分:5)

这就是多态性的含义。类型'a可以是任何类型,因此您找到的解决方案与int list list的工作方式相同。

如果你真的想要一个类型为int list list -> int list list的函数,你总是可以使用类型注释强制它:

let int_transpose : int list list -> int list list = transpose

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