Open1

手抜きの限りを尽くしてScheme処理系を作りたい

okuokuokuoku

とりあえずギリギリまで機能を絞れば既存のパーツにちょっと手を加えるだけでScheme処理系にはなるんじゃないかという気がしている。

前回:

https://zenn.dev/okuoku/scraps/7f429ad67a0b05

仕様

  • define-macro はトップレベルに書ければ十分。let とか lambda の内部に書ける必要はない。(現在の)BiwaSchemeと同じ仕様。
  • コンパイルエラーとかの行番号はちゃんと出せて欲しい。これはソースコードをreadした時のそれぞれのpairにメタデータを付与できるようにすることで実現する。処理系側にweak hashtableがあれば & macro expanderにその辺の配慮があれば良いね。

後者の特徴は無いと死ぬ程ではないから、一旦省略して試作する。つまり製作すべきは define-macro が含まれるSchemeプログラムと既知のマクロ集合を受けとり、define-macro の無いプログラムに変換する物 だな。それ以降の処理系はまぁ何度も作ってるし簡単だろう。