gpt4 book ai didi

list - 理解 Haskell 的过滤器

转载 作者:行者123 更新时间:2023-12-04 16:30:28 26 4
gpt4 key购买 nike

我知道 Haskell 的过滤器是一个高阶函数(意味着一个将另一个函数作为参数的函数),它通过一个列表检查哪个元素满足某些 bool 条件。

我不太明白它的定义:

filter:: (a->Bool)->[a]->[a]
filter p [] = []
filter p (x:y) | p x = x:filter p y
| otherwise = filter p y

我知道如果我将一个空列表传递给函数,它只会返回一个空列表,但是我如何阅读最后两行?

最佳答案

它使用 guards如果您来自具有 C 风格语法的语言,这有点类似于 switch结构体。

最后一个模式是:如果函数 p使用参数 x 计算为真然后返回列表的头部和列表的过滤尾部。否则只返回列表的过滤尾部。

你也可以像这样重写它:

filter p (x:y) = if (  p x ) then
x:filter p y
else
filter p y

关于list - 理解 Haskell 的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2568286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com