Haskell имеет функцию тождества, которая возвращает вход без изменений. Определение прост:
id :: a -> a
id x = x
Итак, для удовольствия это должно выводить 8
:
f = id id id id id id id id id id id id id id id id id id id id id id id id id id id
main = print $ f 8
Через несколько секунд (и около 2 ГБ памяти в соответствии с диспетчером задач) компиляция завершается с ghc: out of memory
. Точно так же интерпретатор говорит ghci: out of memory
.
Так как id
- довольно простая функция, я бы не ожидал, что это будет памятью во время выполнения или времени компиляции. Для чего используется вся память?