Scheme on JavaScript 作りました

昨日は、1000speakers の第1回のイベントがありました。1次会は Ustream にて参加し、2次会から現地で参加しました。

2次会でSICP読書会の話で盛り上がり、水曜日の読書会に参加しようと言うことになり、amachang など数名の方々に色々と Scheme の書き方を教えてもらいました。

3次会が楽しかったです!23:30頃からサイボウズラボにて3次会が始まったんですが、僕が、せっかく教えて頂いたので、Scheme の実装を JavaScript で始めたら、西尾くん(id:nishiohirokazu)と id:amachang が参加し始め、実装大会となりました。

その5時間の成果が、http://goldenscheme.accelart.jp/ です。

全員、基本文法は実装できました!!

処理系を実装するに当たり、言語を問わず、一般論として、難しいのは2カ所です。

  1. 変数のスコープ - define, let, set!
  2. 関数呼び出し - lambda (まぁ、これは、定義だけど)

ちゃんとそこら辺を実装できました!それ以外の部分は Scheme の場合は、継続とマクロが気になりますが、まぁ、たいていの標準関数は単純作業だと思います。

いや〜 楽しかった。

西尾君や amachang もソースを公開してくれると言うことなので、3人とも、違う実装方法をとっているので、差を見比べてみると面白いと思います。

amachang
http://d.hatena.ne.jp/amachang/20080120/1200850505
西尾君
http://d.hatena.ne.jp/nishiohirokazu/20080121/1200888986 (コードは文章の頭の方のリンク)
http://goldenscheme.accelart.jp/GoldenScheme.js