删除Haskell中列表中的重复元组

时间:2014-10-27 21:25:27

标签: list haskell duplicates tuples

我无法弄清楚如何从元组列表中删除所有重复项 例如[(1,2),(2,1),(5,2),(5,6)]

这里的副本将是(2,1)(与订单无关)。我只想删除其中一个副本,我该怎么做?

symEq :: Eq a => (a,a) -> (a,a) -> Bool
symEq (x,y) (u,v) = (x == u && y == v) || (x == v && y == u)

removeDuplTuples :: Eq a => [(a,a)] -> [(a,a)]
removeDuplTuples = nubBy symEq

这是我读过的一些代码,但我认为它并不完全相关

1 个答案:

答案 0 :(得分:5)

您发布的代码完全相关,这正是您想要的......

让我们一步一步:

symEq接受两个元组并检查第一个和最后一个元素是否相等或者如果彼此相对的元素相等。

nubBynub使用自定义函数而不是(==)

nubBy位于Data.List包中,只需在文件开头import Data.List即可使用它。