2013年6月6日木曜日

[Ruby][Scheme] Micro Schemeの実装(15) REPLを作成

REPLを作成し、コンソールから式を評価できるようにした。
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が無いと不便なので、先にこちらを実装しよう。