Я просматривал некоторые примеры кода Фибоначчи последовательность Clojure:Какая точка ленивого seq в clojure?
(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 в сфере видимости.