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

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还是足够聪明,可以了解哪些类型与您的要求相近.


Fed*_*lev 8

有一些方法可以做到,你可以使用列表推导,例如:

[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)


Sat*_*vik 5

直接回答

> 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)

无论何时想要搜索任何功能,都应该尝试使用.有时类型足以获取有关所需功能的信息.