通常我执行的序列操作,我总是使用doall
来实现它们。因此,我想知道拥有惰性序列的实际用途是什么?
我在网上看到的所有使用延迟序列的例子都是为了构建seq -(取5 (range)) -这段代码也可以重写为- (range 5) -我的观点是所有seq的生成都可以在没有lazy seq的情况下完成,那么他们的实际需求是什么?
我只看过用来生成数字序列的惰性seq的例子,还有其他的应用吗?
发布于 2019-08-03 23:18:37
他们按需产生结果,并可以在必要时停止生产。这使得像无限序列、并行处理、组合操作和避免临时存储(可以通过使用传感器进一步优化)之类的事情成为可能。
最后,惰性使得将递归算法转换为序列变得容易(使用lazy-seq
)
发布于 2019-08-05 13:43:52
可以在tentacles library中找到一个懒惰的seq示例(尽管我不确定它是否是一个很好的示例)。
Eric Normand还展示了一个利用惰性序列的reading pages of data from a database示例,因此客户端只获取他们真正需要的页面。
附注:编程Clojure一书(第3版,第85页)提到了使用惰性序列的以下指南:
在生成大的或可变大小的sequences.
https://stackoverflow.com/questions/57338908
复制相似问题