Make a Lispをやってみている
はじめに
後期に入ってからどうも体調が優れず、もう大体3ヶ月ぐらいまともにモノを書けてない。
リハビリを兼ねて、RustでそれなりにしっかりしたVM式のLisp処理系を書いてみることにした。 Lispは一番実装しなれてるアプリケーションなので、肩慣らしに丁度いいだろうと判断。
malにはステップバイステップの実装ガイドがあり、すでにかなり多くの数の言語で実装されている。 参考になる実装がたくさんあるので、挫折しにくそう。ガイドもあるのでコードを書く負担も軽い。
malのガイドは素朴なインタプリタを実装するもので、VMまでは扱わない。VMの実装はちょっとしたチャレンジになる。 sole
単純なリーダー(いわゆるパーサー)を実装済み
今はchumskyというRustのパーサコンビネータライブラリを使って実装している。 かなり古くからあるスタックベースのVM。スタック、環境、コード、ダンプの4つの連結リストを使ってプログラムを実行する。
関数型言語をターゲットにしている。後世の関数型言語処理系に大きな影響を与えた。