ラムダ計算インタプリタを作ってみた

JavaScriptで学ぶ・プログラマのためのラムダ計算 - 檜山正幸のキマイラ飼育記 (はてなBlog) を見てたらラムダ計算のインタプリタを作りたくなってしまった。JavaScript で適当に作成。
http://v.takeuchi.googlepages.com/lambda.html
例えば 問題集編 にある

(λx.1)[(λx.[x(x)])(λx.[x(x)])]

(λx.1)((λx.x x) (λx.x x))

とすると実行できます。
別の例として、チャーチ数を使って 3 * 4 を計算してみます。

(λm.λn. m ((λm.λn.λs.λz. m s (n s z)) n) (λs.λz.z)) (λs.λz.s(s(s(z)))) (λs.λz.s(s(s(s(z)))))

を入力して適当にクリックしていくと

λs.λz.s (s (s (s (s (s (s (s (s (s (s (s z)))))))))))

になります。
Firefox でしか動作確認してないので IE では動かないかも…。しかも引数は一つしかとれないし、演算子も使えません。
TAPL のページとかには、もっとまともな実装があるのでそちらも。
追記: Opera に対応した…かも。
追記2: 下線が表示されなかったりカーソルが変化しなかったりするなあ。むむ。