我正在寻找一个标准的库函数,它通过相等的方式对元素进行分组。
示例:
f [1,2,3,1,2,3] == [ [1,1], [2,2], [3,3] ]
撰写group
和sort
完成工作:
Prelude Data.List> group . sort $ [1,2,3,1,2,3]
[[1,1],[2,2],[3,3]]
但是,Haskell的库中是否有一个本机函数可以在单个函数中执行上述工作?
我看了Data.List,但没有找到这样的功能。
答案 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.