pandoricマクロ

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

*1:もちろん毎回、補助関数を記述するのも面倒ですね

*2:まだ一時はChicken Schemeに集中するので他の処理系のことは配慮してません