Как уже упоминалось выше, большая часть структур данных в Clojure (и функций
для работы с этими структурами данных) является «ленивой»(lazy). В языке имеется
явная поддержка «ленивых» структур данных, позволяя программисту эффективно
работать с ними. Одним из достоинств поддержки «ленивых» структур данных
является то, что можно реализовывать очень большие или бесконечные
последовательности используя конечное количество памяти. «Ленивые» последовательности и
функции также могут использоваться для обхода ограничений, связанных с отсутствием
оптимизации хвостовых вызовов в Clojure.
( Read more... )