mokeheheのScheme日記

ツッコミ、添削大歓迎です。いろいろ教えてください。

2008-01-27

小っちゃい処理系

俺にも理解できるような、小っちゃい処理系を探す。2ちゃんスレのテンプレから

CAMPUS LIsP
  • 1000行。わかりやすい。
  • マクロなし
TinyScheme
  • コンパイルして動いた
  • ソースファイルはほぼ1つだけど、4500行もあって、おっかない。
  • TinySchemeは、MiniSchemeを元に作られてるとのこと
MiniScheme
  • 1ファイルだけ。2400行。
  • coded by Atsushi Moriwaki (11/5/1989)
  • Revised by Akira KIDA
AMScheme
  • Atsushi Moriwaki Lisp
  • 内容的にはこっちのほうが古いのかな?
  • R4RS
  • ソースが小分けになっているので、場合によってはこっちのほうが理解しやすいかも。
KIScheme
  • 日本語コメントなので安心
bit

たけおかたけおか2008/07/27 20:18通りすがりの者です(もう、ここはチェックしないかも)
&& Optimization of GCL/KCL を書いている者です。

> コンパイラどうなってんだ?
CommonLispならコンパイルそのものは、あんまり難しくありませんよ。直感どおりにコードを生成すればよし。インタープリタからの呼び出しも、難しくはないはず。
問題は、実行中のLispインタープリタに、コンパイルした機械語コードをリンクする、いわゆる「インクリメンタル・リンク」を実現するテクニックです。それは、OSや、リンカを十分に理解していないと、うまく実装できないでしょう。
また、もっと本質的に難しいのは、ガーベジ・コレクタが動いたときに、コンパイルド・コードとうまく共存するかです。すごく単純に言うと、コンパイルド・コードが一時的に、リスト(など)のポインタを機械語レジスタの置いたときに、ガーベジ・コレクタが、そのレジスタをチェックしないと、矛盾が生じる、というような問題が出るので。

トラックバック - http://sicp.g.hatena.ne.jp/mokehehe/20080127