Я просматриваю пример последовательности Fibonacci clojure code:
(def fibs (lazy-cat [1 2] (map + fibs (rest fibs))))
Я вообще понимаю, что происходит, но не получаю точку lazy-cat
.
Я знаю, что lazy-cat
- это макрос, переводящий что-то вроде этого:
(def fibs (concat (lazy-seq [1 2]) (lazy-seq (map + fibs (rest fibs)))))
Что именно достигается lazy-seq
? Он все равно будет оцениваться лениво даже без lazy-seq
? Это строго для целей кэширования?
EDIT: Спасибо за ответы. Моя путаница заключалась в том, что он работал с простым concat
из REPL, потому что у меня было предыдущее связывание с fibs в области.