Haskell ma funkcję tożsamości, która zwraca dane wejściowe w niezmienionej postaci. Definicja jest prosta:
id :: a -> a
id x = x
Więc dla zabawy powinno to dać 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
Po kilku sekundach (i około 2 GB pamięci według Menedżera zadań) kompilacja kończy się niepowodzeniem ghc: out of memory
. Podobnie mówi tłumacz ghci: out of memory
.
Ponieważ id
jest to dość prosta funkcja, nie spodziewałbym się, że będzie obciążała pamięć w czasie wykonywania lub kompilacji. Do czego służy cała pamięć?
id
pliki. W VIM, z kursorem w sprawie definicjif
, to zrobić::s/id id/id . id ./g
.