나는 몇 가지 예를 들어 피보나치 시퀀스의 Clojure 코드를 찾고 있어요 :clojure에서 lazy-seq의 요점은 무엇입니까?
(def fibs (lazy-cat [1 2] (map + fibs (rest fibs))))
나는 일반적으로 진행되고 있지만, lazy-cat
의 요점을 파악하지 않는 것을 이해합니다. 정확히 lazy-seq
을 성취는 무엇
(def fibs (concat (lazy-seq [1 2]) (lazy-seq (map + fibs (rest fibs)))))
: 나는 lazy-cat
가 이런 식으로 번역되는 매크로 것을 알고? lazy-seq
이 없어도 느리게 평가됩니다. 이것은 엄격하게 캐싱 목적입니까?
편집 : 답변 해 주셔서 감사합니다. 내 혼란은 REPL에서 일반 concat
으로 작동한다는 것이 었습니다. 범위에있는 fibs에 이전 바인딩이 있었기 때문입니다.