簡単な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だけです。