gpt4 book ai didi

list - 如何避免不必要的计算?

转载 作者:行者123 更新时间:2023-12-03 05:11:56 24 4
gpt4 key购买 nike

如果列表中超过 3 个元素的测试失败,我需要返回 false。有什么我可以优化的吗?

isItemOk :: Integer -> Boolean 
isItemOk = ( some costly opernation )

这是我正在尝试优化的功能,

isListOk :: [Integer] -> Boolean 
isListOk = 3 >= sum ( [ 1 | x <- [1.1000], isItemOk x ])

我的优化尝试,假设找到 4 个元素就不再寻找更多元素。

isListOk :: [Integer] -> Boolean 
isListOk = 3 >= sum ( take 4 [ 1 | x <- [1.1000], isItemOk x ])

谢谢。

最佳答案

您可以仅使用 filter 来检查失败元素,然后take 4 并查看 length 有多少个元素。

惰性评估意味着在找到这四个之后它不会再检查任何东西,所以你就完成了。当然,如果测试因三个或更少的元素而失败,它将检查整个列表,但对此您无能为力。

避免的重要事情是“计算未通过测试的元素”,或“过滤然后获取结果的长度”,或类似的事情。如果不先使用 take 或类似的东西,这样做将强制检查整个列表。这是经常向初学者提供的“使用 null 或模式匹配来检查空列表”建议的更通用版本。但看起来您已经避免了这个错误!

关于list - 如何避免不必要的计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504334/

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