【问题标题】:remove elements in list (contrary to filter)删除列表中的元素(与过滤相反)
【发布时间】:2020-05-24 16:50:25
【问题描述】:

您好,我正在尝试从适用于我的函数的列表中删除元素: removeBy 偶数 [1..10] → [1,3,5,7,9] 或 removeBy (=='a' ) ['b' , 'a' ,'c' ] → "bc"

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

removeBy :: (a -> Bool) -> [a] -> [b]
removeBy function list = map function list 

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

Variable not in scope: removeBy :: (a0 -> Bool) -> [a1] -> t

有人可以帮助我吗?

【问题讨论】:

  • 你究竟想如何运行它?你输入什么命令?在哪里?

标签: haskell


【解决方案1】:

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

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

【讨论】:

  • 没错!只需在给定列表上使用过滤器和对条件的否定:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2020-10-24
  • 2016-09-19
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多