Minimális Lisp interpretert készítő sorozatom előző részében arról számoltam be, hogy az értelmezőnek már lehetséges rekurzív procedúrákat megadni, amiket helyesen futtatni képes. Ma sikerült egy végtelen ciklust ábrázoló végtelen rekurzív függvényt úgy futtatni, hogy az "soha" nem ér véget, azaz a végtelen rekurzió nem szakad meg memóriaelfogyás, veremtúlcsordulás vagy egyéb probléma miatt, hanem stabil memóriafogyasztás mellett szépen pörgeti a processzort, amíg le nem lövöm a processt.
Ehhez alapvetően két összetevő volt szükséges: garbage collector és tail-call optimization. Garbage collector azért, hogy az "iterációk" során létrehozott, de később már fölösleges objektumok felszabaduljanak. Ellenkező esetben folyamatos memóriaszivárgás miatt utóbb elfogyna a memória, ami a program összeomlását okozná. Tail-call optimization pedig azért kell, hogy "visszacsinálja" azt, hogy egy ciklust rekurzióval írunk le, mivel (egy egyszerű) funkcionális nyelven csak így lehet. Ellenkező esetben, a rekurzió naív függvényhívásos implementációjával a stack folyamatosan növekedne új frame-ekkel, ami nem mehet a végtelenségig.