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を使っている部分で不整合が起きるか...
  • ...

明日の電車の中ででも考えよ。