我正在学习Clojure。在解决一个问题时,我必须使用
以下是一个示例,说明它不是惰性的:
上面的代码会打印出:
first
+filter
。我注意到过滤器对于所有输入都是不必要的。如何使filter
惰性运行,以便它不需要为整个输入应用谓词。以下是一个示例,说明它不是惰性的:
(defn filter-even
[n]
(println n)
(= (mod n 2) 0))
(first (filter filter-even (range 1 4)))
上面的代码会打印出:
但实际上只需打印到1
2
3
2
,如何才能使其变成惰性呢?
some
而不是(first (filter ...))
。 - exupero