Open4

Ribbitをevalに対応させる

okuokuokuoku

これでScheme準拠という点では最後。。もっとも、 yuni では eval(yuni scheme) ライブラリに対して実施できれば十分(他のライブラリをimportできる必要は無い)ということにしている。このevalはマクロの展開に必要になる。

okuokuokuoku

とりあえず exit を値のやりとりに使う

VMとホスト言語とのやりとりができるプリミティブが今のところ exit しか無いので、これを拡張して:

  1. 単にVM命令列が終端まで行った(mode = 0)
  2. exit が呼ばれた(mode = 1)
  3. eval が終わった(mode =2)

の区別ができるようにした。後でもうちょっと真面目にやる。。

https://github.com/okuoku/yuniribbit-proto/commit/bf861d2c1f86863c6c4898317abf003a3b24aad9

okuokuokuoku

とりあえずテスト通す

う〜〜〜〜〜〜ん。。動くけど、ちょっとこれはどうか。。

https://github.com/okuoku/yuniribbit-proto/commit/308d5b0c1ee97a7ebde6970f3df106041dfc135e

VM自体の起動のために1つと、フロントエンドとの更新用に2つプリミティブを足した。

が、そもそも、VMの外部も内部もSchemeなので直接データをやりとりすることができない。。苦慮の策ということで一旦シリアライズしてしまうことにした。超遅い。

read と同様に、 eval にはexpanderとの循環参照があるので、ロード後パッチする形で循環参照を断ち切っている。