Tôi đang tìm kiếm thông qua một số ví dụ Fibonacci Code Sequence clojure:Whats điểm của lazy-seq trong clojure?
(def fibs (lazy-cat [1 2] (map + fibs (rest fibs))))
tôi thường hiểu những gì đang xảy ra, nhưng không nhận được điểm lazy-cat
. Tôi biết rằng lazy-cat
là một macro được dịch một cái gì đó như thế này:
(def fibs (concat (lazy-seq [1 2]) (lazy-seq (map + fibs (rest fibs)))))
gì chính xác là lazy-seq
hoàn thành? Nó vẫn sẽ được đánh giá uể oải ngay cả khi không có lazy-seq
? Điều này có đúng với mục đích lưu vào bộ nhớ cache không?
EDIT: Cảm ơn câu trả lời. Sự nhầm lẫn của tôi là nó làm việc với một đồng bằng concat
từ REPL bởi vì tôi đã có một ràng buộc trước đó để fibs trong phạm vi.