Haskell a une fonction d'identité qui renvoie l'entrée inchangée. La définition est simple:
id :: a -> a
id x = x
Donc, pour le plaisir, cela devrait afficher 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
Après quelques secondes (et environ 2 Go de mémoire selon le Gestionnaire des tâches), la compilation échoue avec ghc: out of memory
. De même, dit l'interprète ghci: out of memory
.
Comme id
c'est une fonction assez simple, je ne m'attendrais pas à ce que ce soit une charge de mémoire au moment de l'exécution ou de la compilation. À quoi sert toute la mémoire?
id
s. En VIM, avec le curseur sur la définitionf
, faites ceci::s/id id/id . id ./g
.