コンビネータとパラメタライズが相性が悪いという話を前回は書いた。
しかし、冷静に考えると簡単な話だった。 値を適用する段階までパラメタライズを遅らせればいいだけだ。 parameterize を以下の定義に置換えるだけで期待する動作になる。
(define-syntax $parameterize (syntax-rules () ((_ ((p e) ...) body) (lambda(s)(parameterize ((p e) ...) (body s))))))
Document ID: 725ae5acd484c6207985646d876cf1eb