Ответ 1
Слияние потоков, вероятно, самое большое. Он превращается в нечто вроде sum . map (+1) . filter (>5)
, которое номинально выделяет два новых списка, в простой цикл, который работает в постоянном пространстве.
Потому что я вижу, что это происходит: это другой вопрос, чем Какие оптимизации можно ожидать от GHC для надежной работы?, потому что я не прошу самых надежных оптимизация, просто самая умная/мощная.
Я специально ищу неинтуитивную оптимизацию, которую GHC делает, что может иметь серьезные последствия для производительности и демонстрировать мощь оптимизации компилятора, связанную с ленивой оценкой или чистотой. И прямые объяснения о том, как добраться до них.
Лучшие ответы будут иметь:
Слияние потоков, вероятно, самое большое. Он превращается в нечто вроде sum . map (+1) . filter (>5)
, которое номинально выделяет два новых списка, в простой цикл, который работает в постоянном пространстве.