#clojure #loops
#clojure #циклы
Вопрос:
У меня есть вопрос о функциях итерации и библиотеки Clojure, реализованных аналогично итерации.
(defn iterate
2 "Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of side-effects"
3 {:added "1.0"
4 :static true}
5 [f x] (cons x (lazy-seq (iterate f (f x)))))
Без цикла … повторная итерация не использует свой стек, потому что она работает с отложенной последовательностью?
Ответ №1:
Да, каждый раз, когда вы вводите следующий элемент в отложенной последовательности, iterate вызывается один раз, поэтому нет (немедленной) рекурсии и нет потребления стека.