Lispインタープリター「Liyad」へのコンパイラ搭載(作業中)
現在、Lispインタープリター「Liyad」にコンパイラ搭載を進めている。
まだ、公開リポジトリにはpushしていないが、現在、技術検証用のプロトタイプを作成している。
同インタープリターはJavaScriptで書かれているので、コンパイラといっても、ホスト環境の言語であるJavaScriptを生成する形だ。
$$defun
, $$lambda
, $$closure
オペレーター(インタープリター版より名前の$
が1つ多い)で関数を定義すると、その関数をJavaScriptにコンパイルする。
実行速度は上々。
(tarai 12 6 0)
も 0.数秒
で返ってくるようになった。
今後の課題はエラーとなる(バグが残っている)パターンの修正、インタープリターとの互換性と、ファイルサイズ(約20KB増える)だろうか?