簡単なSCHEME->Javascriptコンパイラを作った

既存のSCHEMEON.jsを生かして、こいつの動作に合うようにJavaScriptを生成するSchemeコンパイラを作ってみました。
http://www.d2.dion.ne.jp/~ujiie/schemeonjs/index.html

(define c (compile '(define cfib (lambda (n) (if (< n 2) n (+ (cfib (- n 1)) (cfib (- n 2))))))))

で「cfib関数を定義する」というコードをコンパイルします。コンパイルした結果は、実行コードのエントリー関数(無引数)。

(c)

で上のコードが実行されます。これでやっとコンパイルされたcfib関数が実行できます。

(cfib 25)

の結果が、うちのPCでは8.299秒でした。
ちなみにコンパイルしない(fib 25)では11.462秒。大して変わらない。うぐぐ。
でも早くなったからいいや。
コンパイルできるのは数値、文字列、シンボル、関数適用、シンタックスではdefine、lamba、beginだけです。