我无法弄清楚如何从元组列表中删除所有重复项 例如[(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
这是我读过的一些代码,但我认为它并不完全相关
答案 0 :(得分:5)
您发布的代码完全相关,这正是您想要的......
让我们一步一步:
symEq
接受两个元组并检查第一个和最后一个元素是否相等或者如果彼此相对的元素相等。
nubBy
仅nub
使用自定义函数而不是(==)
。
nubBy
位于Data.List
包中,只需在文件开头import Data.List
即可使用它。