9

たとえば、リストのリスト[[1,2,3],[1,2,3],[1,2,3]]がある場合、Haskellでこれを1つのリストに変換する方法はあります[1,2,3,1,2,3,1,2,3]か?

前もって感謝します!

4

3 に答える 3

31

Concatはあなたが望むことをします:

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

将来、これらの種類の関数を見つけるには、hooglehttp://www.haskell.org/hoogle/を使用できます

タイプを検索できます-必要な関数はです[[Int]] -> [Int]ので、この検索を行うことができます。一番上の関数は連結です。

私は実際にそれを言及する必要があります

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

したがって、リストの任意のリストで機能し、代わりにそのタイプでhoogleを非常に喜んで検索することもできます。しかし、Hoogleは、どのタイプがあなたが求めていたものに適切に近いかを理解するのに十分賢いです。

于 2012-10-08T19:53:48.170 に答える
8

これを行うにはいくつかの方法があります。たとえば、リスト内包表記を使用できます。

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

またはjoin関数、それは実際には同じ方法です:

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]]
于 2012-10-08T19:54:24.990 に答える
5

直接回答

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

関数を検索するときはいつでもhoogleを試してください。必要な関数に関する情報を取得するには、タイプで十分な場合があります。

于 2012-10-08T19:53:48.230 に答える