Scala には、groupBy
リスト アイテムからキーを抽出するための関数を受け入れるリストの関数があり、アイテムがキーとそのキーを生成するアイテムのリストから構成されるタプルである別のリストを返します。つまり、次のようなものです。
List(1,2,3,4,5,6,7,8,9).groupBy(_ % 2)
// List((0, List(2,4,6,8)), (1, List(1,3,5,7,9)))
(実際には、現在のバージョンではMap
代わりに を提供しているように見えますが、それは重要ではありません)。C# には、値を同時にマップできるさらに便利なバージョンがあります (たとえば、キー関数がタプルの一部を抽出するだけの場合に非常に便利です)。
Haskell には がありますがgroupBy
、多少異なります。比較関数に従って実行をグループ化します。
書きに行く前にgroupBy
、Haskell に Scala に相当するものはありますか? Hoogle は、署名がどのように見えると私が期待するか (以下) については何も持っていませんが、単に間違っている可能性があります。
Eq b => (a -> b) -> [a] -> [(b,[a])]