如果我有一个列表列表,比如说[[1,2,3],[1,2,3],[1,2,3]]
,那么Haskell中是否有任何方法可以将其转换为一个列表,例如[1,2,3,1,2,3,1,2,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。有时类型足以获得有关所需功能的信息。