我正在尝试过滤haskell中的元组列表.我想返回第一个和第二个元素相同的元组.
我正在尝试这个
filter ((==fst).snd) [(1,2), (2,2), (3,3)]
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有什么想法吗?谢谢!
Lee*_*Lee 13
你可以使用uncurry:
filter (uncurry (==)) [(1,2), (2,2), (3,3)]
Run Code Online (Sandbox Code Playgroud)
或者你可以匹配每个元组:
filter (\(x,y) -> x == y) [(1,2), (2,2), (3,3)]
Run Code Online (Sandbox Code Playgroud)
试试这个:
filter (\p -> fst p == snd p) [(1,2), (2,2), (3,3)]
Run Code Online (Sandbox Code Playgroud)
(==fst).snd意味着\p -> snd p == fst,显然这不起作用.如果你真的不想使用lambda抽象,并且想要一个没有意义的版本,这里有一种实现方法(你需要先导入Control.Applicative):
filter ((==) <$> fst <*> snd) [(1,2), (2,2), (3,3)]
Run Code Online (Sandbox Code Playgroud)