haskell - 将列表列表转换为一个列表

时间:2012-10-08 19:51:55

标签: list function haskell

如果我有一个列表列表,比如说[[1,2,3],[1,2,3],[1,2,3]],那么Haskell中是否有任何方法可以将其转换为一个列表,例如[1,2,3,1,2,3,1,2,3]

提前致谢!

3 个答案:

答案 0 :(得分:24)

康卡特做你想做的事:

concat [[1,2,3],[1,2,3],[1,2,3]]

要在将来找到这些功能,您可以使用hoogle http://www.haskell.org/hoogle/

您可以搜索某个类型 - 您所需的功能为[[Int]] -> [Int],因此您可以执行this search。 top函数是concat。

我应该事实上提到

concat :: [[a]] -> [a]

因此它适用于任何列表列表,您也可以非常愉快地搜索 用这种类型的hoogle代替。 Hoogle很聪明,可以理解 但是,哪种类型与你要求的相近。

答案 1 :(得分:7)

有一些方法可以使用,例如:

[y | x <- [[1,2,3],[1,2,3],[1,2,3]], y <- x]

或加入函数,实际上,同样的方式:

import Control.Monad (join)
join [[1,2,3],[1,2,3],[1,2,3]]

或concat函数:

concat [[1,2,3],[1,2,3],[1,2,3]]

或msum(与concat相同):

import Control.Monad (msum)
msum [[1,2,3],[1,2,3],[1,2,3]]

或mconcat(与concat相同):

import Data.Monoid (mconcat)
mconcat [[1,2,3],[1,2,3],[1,2,3]]

答案 2 :(得分:5)

直接回答

> concat [[1,2,3],[1,2,3],[1,2,3]]
[1,2,3,1,2,3,1,2,3]

每当您想要搜索任何功能时,都应该尝试hoogle。有时类型足以获得有关所需功能的信息。