use*_*032 7 haskell function list
如果我有一个列表列表,比如说[[1,2,3],[1,2,3],[1,2,3]],Haskell中是否有任何方法可以将其转换为1个列表,例如[1,2,3,1,2,3,1,2,3]?
提前致谢!
And*_*ewC 27
Concat做你想做的事:
concat [[1,2,3],[1,2,3],[1,2,3]]
Run Code Online (Sandbox Code Playgroud)
要在将来找到这些功能,您可以使用hoogle http://www.haskell.org/hoogle/
您可以搜索类型 - 您需要的功能[[Int]] -> [Int],因此您可以执行此搜索.顶部功能是concat.
实际上,我应该提一下
concat :: [[a]] -> [a]
Run Code Online (Sandbox Code Playgroud)
所以它适用于任何列表列表,你也可以很乐意用这种类型搜索hoogle.尽管如此,Hoogle还是足够聪明,可以了解哪些类型与您的要求相近.
有一些方法可以做到,你可以使用列表推导,例如:
[y | x <- [[1,2,3],[1,2,3],[1,2,3]], y <- x]
Run Code Online (Sandbox Code Playgroud)
或者加入函数,实际上,同样的方式:
import Control.Monad (join)
join [[1,2,3],[1,2,3],[1,2,3]]
Run Code Online (Sandbox Code Playgroud)
或者连续功能:
concat [[1,2,3],[1,2,3],[1,2,3]]
Run Code Online (Sandbox Code Playgroud)
或msum(与concat相同):
import Control.Monad (msum)
msum [[1,2,3],[1,2,3],[1,2,3]]
Run Code Online (Sandbox Code Playgroud)
或mconcat(与concat相同):
import Data.Monoid (mconcat)
mconcat [[1,2,3],[1,2,3],[1,2,3]]
Run Code Online (Sandbox Code Playgroud)
直接回答
> concat [[1,2,3],[1,2,3],[1,2,3]]
[1,2,3,1,2,3,1,2,3]
Run Code Online (Sandbox Code Playgroud)
无论何时想要搜索任何功能,都应该尝试使用.有时类型足以获取有关所需功能的信息.