Преобразует ли ghc список, используемый только один раз, в генератор из соображений эффективности?

Если да, то является ли это частью стандарта или оптимизацией для конкретного ghc, от которой мы можем зависеть? Или просто оптимизация, от которой мы не обязательно можем зависеть.

P.S.: Когда я попробовал тестовый образец, он, похоже, показал, что это имеет место/

Prelude> let isOdd x = x `mod` 2 == 1
Prelude> let isEven x = x `mod` 2 == 0
Prelude> ((filter isOdd).(filter isEven)) [1..]

Жрет процессор, но не потребляет много памяти.

5
задан Daniel Fischer 16 February 2012 в 14:00
поделиться