es オペレーティングシステム
id:ranekovさんのhttp://d.hatena.ne.jp/ranekov/20061030から。
http://nes.sourceforge.jp/index.html
OSを作っている場合には、Squeakが動くかどうかというのは良いベンチマークになりますね。File IOやディスプレイやポインティングデバイスなどのドライバを書くたびに、ほんのちょっとしたsupport codeを書くだけで試験ができるようになりますから。
eToysのドキュメント
http://wiki.laptop.org/go/Sugar_EToysというものを一生懸命書いている人がいました。
Ianのやつ
Ianのやつを勉強中。Lispの世界とObjectの世界を行ったり来たりできるものの、数字も普通の数とタグつきのオブジェクトの世界で別だし、メッセージとして送るか式として評価するかによってシンタックスを変えなくてはいけないので、なかなか混乱します。mapを書くだけでも死ぬほど時間がかかって、ようやく
(define map
(lambda (func list)
(let ((s [list size])
(ret [Array new: [list size]])
(idx '0)
(tmp 0))
(while [idx < s]
(set tmp (func [list at: idx]))
[ret at: idx put: tmp]
(set idx [idx + '1]))
ret)))
(define n '(1 2 3))
(define n (map (lambda (x) ['3 * x]) n))
[StdOut nextPutAll: [n printString]]というものになりました。listは実はExpression型のオブジェクトで、Arrayのように振舞います。コンパイラの中間表現として使われているものです。