删除列表中的元素(与过滤相反)

jks*_*end 0 haskell

您好,我试图从适用于我的函数的列表中删除元素,例如: removeBy 甚至 [1..10] ?[1,3,5,7,9] 或 removeBy (=='a' ) ['b' , 'a' ,'c' ] ?“公元前”

使用高阶函数,如 map、foldl、foldr 和 filter 我所做的是

removeBy :: (a -> Bool) -> [a] -> [b]
removeBy function list = map function list 
Run Code Online (Sandbox Code Playgroud)

当我尝试运行示例 1 时,即使我得到

Variable not in scope: removeBy :: (a0 -> Bool) -> [a1] -> t
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我吗?

bra*_*drn 7

你可以做filter (not . condition) list——也就是说,否定条件,即过滤所有not满足条件的值。因此,例如,您的removeBy (=='a')将是相同的filter (not . (=='a'))-或者更简单,filter (/='a')。

至于为什么您尝试的实现不起作用:map function list仅适用function于 的每个元素list,因此无法添加或删除任何元素。