Pandoricマクロ

Let Over Lambdaを読んで、

Pandoricマクロに惹かれました。

Pandoricマクロは開かれたクロージャを

生成するためのマクロと解釈しています。

lambdaで生成されたクロージャの環境には、

通常外部から値を参照する手立てはありません。

書き換え可能なパラメータを持つクロージャを生成したい時、

かといってパラメータオブジェクトを生成したり、

オブジェクトシステムを導入することは大げさ過ぎます。*1

Let Over Lambda で紹介されているPandoricマクロは、

汎変数としてアクセス可能なスロットを持つクロージャを生成するマクロですが、

自分自身はCommon LispよりSchemeに愛着があるので、

syntax-rulesでそれらしいものを用意してみました。

Chicken Scheme 4.9.0 で動作テストしています。

syntax-rulesのパターンマッチ構文のR5RS, R7RSの標準と、

各処理系での拡張部分を厳密にふるい分けがないので、

いずれ頭の中で整理しておく必要がありそうと感じています。*2