Составление списка "unlazy" в clojure - PullRequest
6 голосов
/ 26 марта 2012

Я недавно заметил, что здесь была очень четкая реализация сортировки вставкой:

Сортировка вставки в clojure генерирует ошибку StackOverFlow

  • , который страдает от переполнения памяти из-за того, что concat лениво присоединяется к спискам. Мне было интересно:

Какие стратегии мы можем применить к «удалению» списка, когда мы хотим повысить производительность в больших коллекциях?

1 Ответ

5 голосов
/ 26 марта 2012

doall , безусловно, подходит для принудительной ленивой оценки.

Еще одна полезная вещь, которую нужно помнить, это то, что Reduce не ленив. Поэтому это может быть очень полезно в больших вычислениях для обеспечения того, чтобы промежуточные результаты оценивались и сводились к одному выходному значению, прежде чем вычисления продолжатся.

...