Я заметил, что руководство GHC говорит: "Для саморекурсивной функции автоматический выключатель цикла может быть только самой функцией, поэтому прагма INLINE всегда игнорируется."
Разве это не означает, что каждое приложение общих рекурсивных функциональных конструкций, таких как map
, zip
, scan*
, fold*
, sum
и т.д. не может быть встроено?
Вы всегда можете переписать все эти функции при их использовании, добавив соответствующие теги строгости или, возможно, использовать причудливые методы, такие как "потоковое слияние", рекомендованное здесь.
Тем не менее, не все это резко ограничивает нашу способность писать код, который одновременно быстрый и элегантный?