LINUX.ORG.RU

История изменений

Исправление qnikst, (текущая версия) :

один из вариантов deforestation основанный на правиле stream/unstream. Грубо говоря - удаление промежуточных структур.

[1] https://dl.acm.org/citation.cfm?id=165214 статья от SPJ про другой вариант, основанный на foldr/build.

[2] https://dl.acm.org/citation.cfm?id=165214 статья от DonS'а, немного устарело, но принципы сохранились, используется в Text и Vector.

Впрочем подобные фишки и у Бёрда рассматривались. Собранная инфа есть в тезисе Duncan Coutts, но я так и не осилил найти, чтобы прочитать. Оба метода не покрывают всевозможные оптимизации, так что использовать логично и то и другое.

P.S. поправил ошибку.

Исходная версия qnikst, :

один из вариантов deforestation основанный на правиле foldr/unfoldr. Грубо говоря - удаление промежуточных структур.

[1] https://dl.acm.org/citation.cfm?id=165214 статья от SPJ про другой вариант, основанный на foldr/build.

[2] https://dl.acm.org/citation.cfm?id=165214 статья от DonS'а, немного устарело, но принципы сохранились, используется в Text и Vector.

Впрочем подобные фишки и у Бёрда рассматривались. Собранная инфа есть в тезисе Duncan Coutts, но я так и не осилил найти, чтобы прочитать. Оба метода не покрывают всевозможные оптимизации, так что использовать логично и то и другое.