gpt4 book ai didi

haskell - 带谓词的惰性求值

转载 作者:行者123 更新时间:2023-12-04 22:47:01 25 4
gpt4 key购买 nike

我正在尝试在 Haskell 中编写一个函数来计算列表中满足谓词的元素并返回 True如果数量超过某个阈值。我有一个看起来像这样的实现:

hitsThreshold :: Int -> (a -> Bool) -> [a] -> Bool
hitsThreshold threshold test strs =
(length $ filter test strs) >= threshold

问题是,我希望它可以懒惰地评估,以便在长度达到阈值时立即终止。例如,我应该能够传入一个无限列表,并且它应该在有限时间内终止(假设最终达到阈值)。有没有一种简单的方法可以做到这一点?

最佳答案

这是您想要的示例

length $ take 10 $ filter even [1..]

[1..] 是无限的,所以如果这不是懒惰,程序就会挂起。

您正在通过过滤器输送 [1..] even ,然后将数字限制在 10.... 然后您对该列表执行一些操作。而不是 length ,您可以使用 (>= 10) $ length 检查它是否达到阈值)。

关于haskell - 带谓词的惰性求值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20621923/

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