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中
第一次做沒有必要 –
哎呀,謝謝。固定。 –