Мне нравится Clojure. Меня беспокоит то, что я не знаю, как реализованы ленивые последовательности или как они работают.
Я знаю, что ленивые последовательности только оценивают элементы в запрошенной последовательности. Как это делается?
- Что делает ленивые последовательности настолько эффективными, что они не потребляют много стек?
- Как вы можете обернуть рекурсивные вызовы в ленивой последовательности и нет дольше получить стек над потоком для больших вычислений?
- Какие ресурсы используют ленивые последовательности, чтобы делать то, что он делает?
- В каких сценариях ленивые последовательности неэффективны?
- В каких сценариях используются ленивые последовательности?