> (eq 1 (eq 2 3)) compile ->( EQ 1 ( EQ 2 3 ) ) compile ->( EQ 2 3 ) Compiled list code: CTXDOWN NIL PUSH 1 BIND A CTXDOWN NIL PUSH 2 BIND A PUSH 3 BIND B BLTIN EQ CTXUP NIL BIND B BLTIN EQ CTXUP NIL
Все "машинные команды" берут один операнд. Даже там, где он не нужен или где логично было бы сделать два операнда (пара push/bind)
И вот где-то тут системе надо делать вывод о том, что рекурсивый вызов можно преобразовать в итерационный.