Может ли GHC никогда не использовать встроенные карты, сканы, папки и т. д.?

Я заметил, что руководство GHC говорит: «Для саморекурсивной функции прерывателем цикла может быть только сама функция, поэтому INLINE прагма всегда игнорируется».

Разве это не говорит о каждом применении общих рекурсивных функциональных конструкций, таких как map, zip, scan*, fold*, sumи т. д. не могут быть встроены?

Вы всегда можете переписать все эти функции, когда будете их использовать, добавив соответствующие теги строгости или, может быть, применив причудливые методы, такие как «слияние потоков», рекомендуемое здесь.

Тем не менее, разве все это не сильно ограничивает нашу способность писать код, который будет одновременно быстрым и элегантным?

27
задан Jeff Burdges 11 March 2012 в 20:07
поделиться