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
. У VIM, з курсором на визначенняf
, зробіть наступне::s/id id/id . id ./g
.