Использует ли оптимизатор Haskell памятку для повторных вызовов функций в области?
Рассмотрим эту функцию:
f as = if length as > 100 then length as else 100
Поскольку функция чистая, очевидно, что длина будет одинаковой в обоих вызовах. Мой вопрос: оптимизатор Haskell превращает приведенный выше код в эквивалент следующего?
f as =
let l = length as
in if l > 100 then l else 100
Если это так, то какой уровень настройки позволяет? Если нет, то почему? В этом случае потеря памяти не может быть причиной, как объяснено вэтот ответпотому что введенная переменная освобождается, как только заканчивается выполнение функции.
Обратите внимание, что это не дубликатэтот вопрос из-за локальной области, и, следовательно, он может получить радикально другой ответ.