memo
ふむ、いちおうこんなのも動くらしい。自分で書いていても良くわからんけど。
gosh> (eval3 '((lambda (o e n) (o o e n)) (lambda (o e x) (if (= x 0) "even" (e o e (+ x (- 1))))) (lambda (o e x) (if (= x 0) "odd" (o o e (+ x (- 1))))) 10)) (frame (halt) (constant 10 (argument (close (o e x) (frame (test (constant odd (return)) (frame (argument (refer e (argument (refer o (argument (refer o (apply))))))) (frame (argument (refer x (argument (refer + (apply))))) (constant 1 (argument (refer - (apply))))))) (constant 0 (argument (refer x (argument (refer = (apply))))))) (argument (close (o e x) (frame (test (constant even (return)) (frame (argument (refer e (argument (refer o (argument (refer e (apply))))))) (frame (argument (refer x (argument (refer + (apply))))) (constant 1 (argument (refer - (apply))))))) (constant 0 (argument (refer x (argument (refer = (apply))))))) (argument (close (o e n) (refer n (argument (refer e (argument (refer o (argument (refer o (apply)))))))) (apply))))))))) "even"