加入子列表中的元素

时间:2017-04-02 18:52:14

标签: list haskell

给定一个方阵,有没有办法使用应用风格或类似于" zip"一起来自每个[[a]]的第一个元素,然后是第二个元素,依此类推?

> let xss = [[1,4,7], [2,5,8], [3,6,9]] :: [[Int]]
> map (\i -> map (!! i) xss) [0..length xss - 1]
[[1,2,3],[4,5,6],[7,8,9]]

我为编程挑战网站编写了上述解决方案,但我对map (!! i)[0..length xs - 1]不满意。有更先进的方法吗?

1 个答案:

答案 0 :(得分:2)

Data.List.transpose就在你的小巷里。

提示:在寻找可能已在某处实现的功能时,请尝试Hoogle,一个漂亮的Haskell-API搜索引擎。在您的特定情况下,searching for [[a]] -> [[a]]会返回Data.List.transpose作为最高结果。