9
A
回答
5
如果您询问懒惰序列,是的。
user> (def s (map #(do (println "doing work") %) (range 4)))
#'user/s
user> (count s)
doing work
doing work
doing work
doing work
4
一些数据结构可以给你一定的时间的答案,但懒惰序列不具有存储计数和总是计数实现他们。
1
取决于惰性序列的定义。有可能实现那些知道它们的长度而不知道它们的元素。举例来说,请参见this question,但在99%的案例中,它们只是LazySeqs,因此Michiel的答案应该涵盖这一点。
在您的例子情况下,它很容易测试,如:
(realized? s)
回报true
调用(count s)
后,所以s
不是“聪明”,足以知道它的长度却没有意识到它的内容。
+0
哦,我不知道'实现吗?'。谢谢! – al3x
3
对于LazySeq yes,你可以看到它的计数方法here。它从头到尾走过每一个元素。
相关问题
- 1. 什么时候在clojure中实现了一个惰性序列的不同元素?
- 2. 在clojure惰性序列的使用
- 3. 作为矢量的Clojure惰性序列
- 4. Clojure素数懒惰序列
- 5. 如何在clojure中创建一个随机数的惰性序列
- 6. 如何从Clojure中的条件循环中返回一个惰性序列?
- 7. 重新实现Clojure的懒惰SEQ
- 8. 为什么减少这个懒惰序列减慢了这个Clojure程序20x?
- 9. Clojure中是否存在惰性变量?
- 10. clojure-xml/parse是否会返回一个懒惰的序列?
- 11. Clojure的 - 功能没有返回一个懒惰的序列
- 12. Clojure的递归和懒惰序列
- 13. 使用Clojure中的条件减少像循环一样的惰性序列
- 14. clojure中的惯用惰性原子
- 15. 在Clojure中是一个空列表,是一个无限的空值序列吗?
- 16. 在clojure中分组一个bools序列?
- 17. 如何实现一个懒惰的setdefault?
- 18. 在Clojure中实现中断
- 19. 通过索引值将2d向量排序为clojure中的惰性序列
- 20. 实现了,一个在Javascript
- 21. 懒惰评价Clojure发生了什么
- 22. 按clojure中的哈希映射的懒惰序列排序
- 23. 在`async`中实现了一个非递归功能吗?
- 24. 在Julia中实现了一个状态机的好例子吗?
- 25. 在Clojure中创建惰性seq的非线性放缓
- 26. SQLITE3 ORM的C++实现惰性加载
- 27. 在clojure中获取惰性seq的第一个元素的习惯方法
- 28. 了解递归惰性列表
- 29. clojure:如何从惰性seq获取值?
- 30. 了解一个懒惰的斐波那契执行的执行Clojure中
第一次做没有必要 –
哎呀,谢谢。固定。 –