Haskell过滤但保持过滤

Chi*_*llo 0 haskell

根据我的理解,Haskell filter函数filter a bs将从a列表中过滤掉所有内容bs.

有一个简单的方法或变化filter会反其道而行之,只保留a"从表S bs,基本建立的名单a的.

lef*_*out 8

好吧,无论如何,这是不精确的措辞.签名是

filter :: (a -> Bool) -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)

因此filter a bs被描述为过滤器从所有元素bs的是满足 a.

所以要"做相反的",你只需要反转谓词.例如,

Prelude> filter(=='a')"是否有一个简单的方法或过滤器的变体"
"aaaa"
前奏>过滤器(/ ='a')"是否有一个简单的方法或过滤器的变体"
"是否有过滤器的简单方法或过程"

一般来说:

filterNot :: (a -> Bool) -> [a] -> [a]
filterNot pred = filter $ not . pred
Run Code Online (Sandbox Code Playgroud)

Prelude> filterNot(=='a')"是否有一个简单的方法或过滤器的变体"
"是否有简单的方法或过滤器的过滤器"