[英]What does this do in Haskell?
f = filter . flip notElem
我想知道这条线是如何工作的,这是一个应该接受两个字符串并返回一个字符串的函数。
flip :: (b -> a -> c) -> a -> b -> c
翻转函数的前两个参数。 因此,由于notElem :: Eq a => a -> [a] -> Bool
接受一个值和一个列表来检查该值是否不在列表中,所以flip notElem :: Eq a => [a] -> a -> Bool
接受一个列表和一个值来检查它是否不在列表中。
因此,我们将首先部分应用f
的第一个参数来flip notElem
,然后filter
一个列表。 因此,您的表达式是以下形式的简短形式:
f :: Eq a => [a] -> [a] -> [a]
f xs ys = filter (\y -> notElem y xs) ys
因此,它将返回ys
(第二个参数)中不在xs
(第一个参数)中的所有元素。 例如:
Prelude> f [1,3,0,2] [1,4,2,5]
[4,5]
4
和5
都是第二个列表的元素,但不是第一个列表的元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.