如何在元组列表中查找重复项?

use*_*505 4 haskell tuples

筛选元组列表并返回值fstsnd值相同的最佳方法是什么?

[(2,1),(2,2),(3,1),(10,9),(10,10)] 
Run Code Online (Sandbox Code Playgroud)

将返回(2,2)(10,10).

Tik*_*vis 12

最简单的方法是使用filterlambda : filter (\ (a, b) -> a == b) ls.

你也可以变得可爱和使用uncurry,它将两个参数的正常函数改为一个带有元组的函数,给你filter (uncurry (==)).请记住,这(==)只是类型的函数Eq a => a -> a -> Bool,因此uncurry (==)是类型的函数Eq a => (a, a) -> Bool,这正是您正在寻找的.


Eug*_*Sh. 5

您可以使用列表理解来做到这一点:

doubles ls = [(x,y) | (x,y) <- ls, x==y]
Run Code Online (Sandbox Code Playgroud)