您好,我试图从适用于我的函数的列表中删除元素,例如: 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)
任何人都可以帮助我吗?
你可以做filter (not . condition) list——也就是说,否定条件,即过滤所有not满足条件的值。因此,例如,您的removeBy (=='a')将是相同的filter (not . (=='a'))-或者更简单,filter (/='a')。
至于为什么您尝试的实现不起作用:map function list仅适用function于 的每个元素list,因此无法添加或删除任何元素。