按平等分组元素

时间:2016-11-10 13:44:08

标签: haskell

我正在寻找一个标准的库函数,它通过相等的方式对元素进行分组。

示例:

f [1,2,3,1,2,3] == [ [1,1], [2,2], [3,3] ]

撰写groupsort完成工作:

Prelude Data.List> group . sort $ [1,2,3,1,2,3]
[[1,1],[2,2],[3,3]]

但是,Haskell的库中是否有一个本机函数可以在单个函数中执行上述工作?

我看了Data.List,但没有找到这样的功能。

1 个答案:

答案 0 :(得分:3)

base中没有此类功能。但是有discrimination个包。在Data.Discrimination中,您将找到以下功能:

group :: Grouping a => [a] -> [[a]]

您不必自己编写这些Grouping实例,因为对于具有Generic实例的类型,存在默认方法。例如:

{-# LANGUAGE DeriveGeneric #-}
import Data.Discrimination

data A = A deriving Generic
instance Grouping A
instance Sorting A -- Not necessary for what you are trying to do.