Потому что foldr только строит вычисление. Для вещей где не надо накапливать промежуточные шаги надо брать foldl' - левую свертку со строгим аккумулятором
Попробуй аргумент для nil явно передавать вместо возвращения nil. Also, проверяешь с -02? https://tylerhou.com/posts/foldr-build-elimination/ вот тут человек тоже пытается разобраться
Обсуждают сегодня