SLIB対応
multiarg-applyは現段階で動いていたようだ。結構嬉しいぞ。srfi-1については、ひっかかっている問題が有る。それはletrecを正しく実装する事。今は次のようなコードが動いていない。
(letrec ((a (lambda () b)) (b "aiueo")) (a)))
現時点のコードでは、(lambda () b)の部分での環境でbが存在していない。つまり純粋にlexical closureになってしまっている。R5RSを見ると、新しい領域に環境を作る必要が有るみたいですね。おっしゃる通りに致しますよ。とりあえず思い付いた方法。
- letrec用にhashを用意。letrecのbody部の評価が終わったら開放
- globalなhashに値を一時的にdefineし、後で戻す
- これだと、同じ名前のglobal variableを使っている部分で不整合が起きるか...
- ...
明日の電車の中ででも考えよ。