(LETREC compile (compile LAMBDA (E) (comp E (QUOTE NIL) (QUOTE (4 21)))) (comp LAMBDA (E N C) (IF (ATOM E) (CONS (QUOTE 1) (CONS (location E N) C)) (IF (EQ (CAR E) (QUOTE QUOTE)) (CONS (QUOTE 2) (CONS (CAR (CDR E)) C)) (IF (EQ (CAR E) (QUOTE CAR)) (comp (CAR (CDR E)) N (CONS (QUOTE 10) C)) (IF (EQ (CAR E) (QUOTE CDR)) (comp (CAR (CDR E)) N (CONS (QUOTE 11) C)) (IF (EQ (CAR E) (QUOTE ATOM)) (comp (CAR (CDR E)) N (CONS (QUOTE 12) C)) (IF (EQ (CAR E) (QUOTE CONS)) (comp (CAR (CDR (CDR E))) N (comp (CAR (CDR E)) N (CONS (QUOTE 13) C))) (IF (EQ (CAR E) (QUOTE EQ)) (comp (CAR (CDR E)) N (comp (CAR (CDR (CDR E))) N (CONS (QUOTE 14) C))) (IF (either? (CAR E) (QUOTE +) (QUOTE ADD)) (comp (CAR (CDR E)) N (comp (CAR (CDR (CDR E))) N (CONS (QUOTE 15) C))) (IF (either? (CAR E) (QUOTE -) (QUOTE SUB)) (comp (CAR (CDR E)) N (comp (CAR (CDR (CDR E))) N (CONS (QUOTE 16) C))) (IF (either? (CAR E) (QUOTE *) (QUOTE MUL)) (comp (CAR (CDR E)) N (comp (CAR (CDR (CDR E))) N (CONS (QUOTE 17) C))) (IF (either? (CAR E) (QUOTE /) (QUOTE DIV)) (comp (CAR (CDR E)) N (comp (CAR (CDR (CDR E))) N (CONS (QUOTE 18) C))) (IF (either? (CAR E) (QUOTE %) (QUOTE MOD)) (comp (CAR (CDR E)) N (comp (CAR (CDR (CDR E))) N (CONS (QUOTE 19) C))) (IF (either? (CAR E) (QUOTE ≤) (QUOTE LEQ)) (comp (CAR (CDR E)) N (comp (CAR (CDR (CDR E))) N (CONS (QUOTE 20) C))) (IF (either? (CAR E) (QUOTE λ) (QUOTE LAMBDA)) (LET (CONS (QUOTE 3) (CONS body C)) (body comp (CAR (CDR (CDR E))) (CONS (CAR (CDR E)) N) (QUOTE (5)))) (IF (EQ (CAR E) (QUOTE IF)) (LET (comp (CAR (CDR E)) N (CONS (QUOTE 8) (CONS thenpt (CONS elsept C)))) (thenpt comp (CAR (CDR (CDR E))) N (QUOTE (9))) (elsept comp (CAR (CDR (CDR (CDR E)))) N (QUOTE (9)))) (IF (EQ (CAR E) (QUOTE LET)) (LET (LET (complis args N (CONS (QUOTE 3) (CONS body (CONS (QUOTE 4) C)))) (body comp (CAR (CDR E)) M (QUOTE (5)))) (M CONS (vars (CDR (CDR E))) N) (args exprs (CDR (CDR E)))) (IF (EQ (CAR E) (QUOTE LETREC)) (LET (LET (CONS (QUOTE 6) (complis args M (CONS (QUOTE 3) (CONS body (CONS (QUOTE 7) C))))) (body comp (CAR (CDR E)) M (QUOTE (5)))) (M CONS (vars (CDR (CDR E))) N) (args exprs (CDR (CDR E)))) (IF (EQ (CAR E) (QUOTE READ)) (comp (CAR (CDR E)) N (CONS (QUOTE 25) C)) (IF (EQ (CAR E) (QUOTE WRITE)) (comp (CAR (CDR E)) N (CONS (QUOTE 26) C)) (IF (EQ (CAR E) (QUOTE IMPLODE)) (comp (CAR (CDR E)) N (CONS (QUOTE 27) C)) (IF (EQ (CAR E) (QUOTE EXPLODE)) (comp (CAR (CDR E)) N (CONS (QUOTE 28) C)) (complis (CDR E) N (comp (CAR E) N (CONS (QUOTE 4) C))) ))))))))))))))))))))) ) (location LAMBDA (E N) (LETREC (IF (member E (CAR N)) (CONS (QUOTE 0) (posn E (CAR N))) (incar (location E (CDR N)))) (member LAMBDA (E N) (IF (EQ N (QUOTE NIL)) (QUOTE F) (IF (EQ E (CAR N)) (QUOTE T) (member E (CDR N)))) ) (posn LAMBDA (E N) (IF (EQ E (CAR N)) (QUOTE 0) (ADD (QUOTE 1) (posn E (CDR N)))) ) (incar LAMBDA (L) (CONS (ADD (QUOTE 1) (CAR L)) (CDR L)) ) ) ) (complis LAMBDA (E N C) (IF (EQ E (QUOTE NIL)) (CONS (QUOTE 2) (CONS (QUOTE NIL) C)) (complis (CDR E) N (comp (CAR E) N (CONS (QUOTE 13) C)))) ) (vars LAMBDA (D) (IF (EQ D (QUOTE NIL)) (QUOTE NIL) (CONS (CAR (CAR D)) (vars (CDR D)))) ) (exprs LAMBDA (D) (IF (EQ D (QUOTE NIL)) (QUOTE NIL) (CONS (CDR (CAR D)) (exprs (CDR D)))) ) (either? LAMBDA (X Y Z) (or? (EQ X Y) (EQ X Z)) ) (or? LAMBDA (X Y) (IF X (QUOTE T) Y) ) )