https://github.com/takeisa/uschemer2/tree/v0.01
実行例
$ ruby uschemer.rb> (+ 1 2 3)
#<SNumber:0x9f53a08 @value=6>
> ((lambda (a b) (+ a b)) 10 20)
#<SNumber:0x9f58940 @value=30>
>
S式出力は、まだ整形しておらず、Rubyのオブジェクト出力のままだ。
数値、文字列、シンボルはRubyオブジェクトをそのまま使っていたが、
ラッパークラスを作成し、これらのオブジェクトはラッパークラス経由で使用するようにした。
シンボルはinternする仕組みを作っておらず、毎回オブジェクト生成しているので、リソースの無駄使いをしている。
defineが無いと不便なので、先にこちらを実装しよう。
0 件のコメント:
コメントを投稿