ぐは

MonaカーネルSchemeで生成したC言語コードになる気がするので

そ、そうですね。

きっとこんなのでしょうね。(90-min-sccより)

case 0: /* (lambda () (let ((r.5 (%closure (lambda (self.7 k.6 x.1) ...
BEGIN_CLOSURE(1,0); END_CLOSURE(1,0);
PUSH(LOCAL(0/*r.5*/)); GLOBAL(0/*square*/) = TOS();
PUSH(GLOBAL(0/*square*/));
BEGIN_CLOSURE(2,0); END_CLOSURE(2,0);
PUSH(INT2OBJ(5));
BEGIN_JUMP(3); PUSH(LOCAL(2)); PUSH(LOCAL(3)); PUSH(LOCAL(4)); END_JUMP(case 2: /* (lambda (self.8 r.4) (let ((r.2 (%+ r.4 1))) (%halt r.2)))
PUSH(LOCAL(1/*r.4*/)); PUSH(INT2OBJ(1)); ADD();
PUSH(LOCAL(2/*r.2*/)); HALT();
case 1: /* (lambda (self.7 k.6 x.1) ((%closure-ref k.6 0) k.6 (%* x....
PUSH(LOCAL(1/*k.6*/));
PUSH(LOCAL(2/*x.1*/)); PUSH(LOCAL(2/*x.1*/)); MUL();
BEGIN_JUMP(2); PUSH(LOCAL(3)); PUSH(LOCAL(4)); END_JUMP(2);