Когда я бегу (println (iterate inc 0))
в моем РЕПЛ, я получу что-то вроде этого:(println (iterate inc 0)): почему это даже начало печати?
user=> (println (iterate inc 0))
(0 1 2 3 4 5 6 7 8 9 10 11 12 13 ....................
Мои ожидания, когда я запускаю код, который РЕПЛ ничего не показывает и просто застрял, потому что (iterate inc 0)
никогда не заканчивается. Но, я вижу (0 1 2 3 ...
.
(iterate inc 0)
генерирует бесконечную последовательность, которая никогда не возвращается. Если это никогда не закончится, то почему println
начинает печатать значения?
Иными словами, почему началось вычисление (println xx)
, даже если входной сигнал никогда не заканчивается?
'println' не нужна вся последовательность будет реализован перед печатью , он делает это по требованию. «который никогда не возвращается». '(first (iterate inc 0))' вернет вам '0' по той же причине. – zerkms