Использует ли оптимизатор 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

Если это так, то какой уровень настройки позволяет? Если нет, то почему? В этом случае потеря памяти не может быть причиной, как объяснено вэтот ответпотому что введенная переменная освобождается, как только заканчивается выполнение функции.

Обратите внимание, что это не дубликатэтот вопрос из-за локальной области, и, следовательно, он может получить радикально другой ответ.

Ответы на вопрос(3)

Ваш ответ на вопрос