haskell - groupBy 没有达到我的预期,我在寻找什么?

标签 haskell grouping

isPermutation :: (Ord a) => [a] -> [a] -> Bool
isPermutation x y = sort x == sort y

isPermutation "123" "312" -> True
isPermutation "123" "111" -> False

groupBy isPermutation ["123","3","321"] -> ["123","3","321"] <- What I get

groupBy isPermutation ["123","3","321"] -> [["123","321"],"3"] <- What I would want

是否有一个函数可以将列表中具有相同属性的项目分组在一起?

最佳答案

groupBy 仅对共享相同属性的连续元素进行分组,例如

> groupBy (==) [1,2,1,1,2]
[[1],[2],[1,1],[2]]

要将所有元素分组,您需要首先对列表进行排序。

> groupBy isPermutation . sortBy (comparing sort) $ ["123","3","321"]
[["123","321"],["3"]]

(比较是从Data.Ord导入的)

关于haskell - groupBy 没有达到我的预期,我在寻找什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21206345/

相关文章:

r - 根据前 5 个值汇总 R 中的多列

php - 根据值对二维数组进行分组

JavaScript 按年龄组对数组进行分组并查找最大日期

Python:将列表的批处理元素放入预定义的组中

haskell - 如何测试自定义 StateT 的 Monad 实例?

testing - Haskell IO 测试

haskell - 实例函数的类型推断

haskell - put 命令在使用 State monad 的典型函数中执行什么操作?

haskell - 如何使用 Control.Applicative 编写更干净的 Haskell?

visual-studio-2010 - Crystal Reports 中的汇总组级别字段