В 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
это довольно простая функция, я бы не ожидал, что это будет нагрузка на память во время выполнения или компиляции. Для чего используется вся память?
id
s. В VIM, с курсором на определениеf
, сделайте следующее::s/id id/id . id ./g
.