【问题标题】:Implementaion of filter function haskell过滤函数haskell的实现
【发布时间】:2017-10-22 19:04:16
【问题描述】:

有没有办法使用列表理解来编写 Haskell 过滤器函数的实现?

一个错误不断出现,我不知道如何处理它。这就是我所拥有的:

filter' :: (a -> Bool) -> [a] -> [a]
filter' _ [] = []
filter' f xs = [f x | x <- xs]

任何指导或链接将不胜感激。

【问题讨论】:

标签: list haskell filter functional-programming list-comprehension


【解决方案1】:

是的,你可以写成:

filter' :: (a -> Bool) -> [a] -> [a]
filter' f xs = [x | x <- xs, f x]

如果您在列表推导中添加了一个表达式,该表达式的计算结果为布尔值,那么您已经向列表推导添加了一个过滤器:只有当f x 计算为True 时,我们才会将x 添加到列表中.

注意写filter' _ [] = []是没有用的:如果你提供一个空列表,那么列表推导也将返回一个空列表,因为x永远不会从xsx &lt;- xs中选择一个值。

但通常最好使用 filter :: (a -&gt; Bool) -&gt; [a] -&gt; [a] 内置函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多