【发布时间】:2012-09-29 02:30:29
【问题描述】:
如果我有一个列表列表,比如[[1,2,3],[1,2,3],[1,2,3]],Haskell 有什么办法可以将它变成一个列表,比如[1,2,3,1,2,3,1,2,3]?
提前致谢!
【问题讨论】:
如果我有一个列表列表,比如[[1,2,3],[1,2,3],[1,2,3]],Haskell 有什么办法可以将它变成一个列表,比如[1,2,3,1,2,3,1,2,3]?
提前致谢!
【问题讨论】:
Concat 做你想做的事:
concat [[1,2,3],[1,2,3],[1,2,3]]
以后要找到这类功能,可以使用hooglehttp://www.haskell.org/hoogle/
你可以搜索一个类型——你需要的函数是[[Int]] -> [Int],所以你可以做this search。最上面的函数是concat。
其实我应该提一下
concat :: [[a]] -> [a]
所以它适用于任何列表列表,您也可以非常愉快地搜索 用那种类型来胡闹。 Hoogle足够聪明,可以理解 不过,哪些类型与您的要求非常接近。
【讨论】:
有一些方法可以做到这一点,你可以使用列表推导,例如:
[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 [[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]]
【讨论】:
直接回答
> concat [[1,2,3],[1,2,3],[1,2,3]]
[1,2,3,1,2,3,1,2,3]
您应该在想要搜索任何功能时尝试hoogle。有时键入就足以获取有关您需要的功能的信息。
【讨论】: