2

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

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 列表列表转置为 int 列表列表。

谢谢你们!

4

1 回答 1

5

这就是多态性的意义所在。类型'a可以是任何类型,因此您找到的解决方案同样适用于int list list.

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

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

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

于 2013-04-11T10:58:27.463 回答