前に作った処理系に、if と嘘くさい = 演算子を追加した。問題は再帰的な関数定義ができない点。
ノリで Y コンビネータの定義を入力したら通ってしまったので、Y コンビネータで fact を書いてみた。動いた。まぐれくさい。

mins> (define Y (lambda (f) ((lambda (proc) (f (lambda (arg) ((proc proc) arg)))) (lambda (proc) (f (lambda (arg) ((proc proc) arg)))))))
Y
mins>

入力式が一行なのは仕様です。

mins> (define fact (Y (lambda (self) (lambda (x) (if (= x 0) 1 (* x (self (- x 1))))))))
fact
mins> (fact 10)
3628800
mins>

へぇー。