gpt4 book ai didi

clojure - 为什么对惰性序列进行过滤在 clojure 中不起作用?

转载 作者:行者123 更新时间:2023-12-02 21:15:24 27 4
gpt4 key购买 nike

我希望使用以下代码生成两个小于 10 的所有倍数

(filter #(< % 10) (iterate (partial + 2) 2))

预期输出:

(2 4 6 8)

但是,由于某种原因 repl 没有给出任何输出?

但是,下面的代码运行得很好......

(filter #(< % 10) '(2 4 6 8 10 12 14 16))

我知道一种是惰性序列,一种是常规序列。这就是原因。但是,如果我想从惰性序列中过滤所有小于 10 的数字,我该如何克服这个问题...?

最佳答案

(iterate (partial + 2) 2)

是一个无限序列。 filter 无法知道谓词为 true 的项目数量是有限的,因此当您实现序列时,它将永远持续下去(请参阅 Mark 的答案)。

你想要的是:

(take-while #(< % 10) (iterate (partial + 2) 2))

关于clojure - 为什么对惰性序列进行过滤在 clojure 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26009635/

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