2. 変数捕捉と多重評価 2.1. はじめに 関数の場合は引数は必ず1回評価されるのに対し、 マクロを使うと引数の評価の回数を制御することが出来ます。 このことを充分に認識していないと、意図せず変数を多重評価してしまう危険があります。 また、マクロは展開形が呼び出された場所に貼り付けられるので、展開形の中で不用意な 変数名を使っていると貼り付けられた場所にあった変数名と衝突してしまう危険があります。 これを避けるために、マクロ展開形の中では一意であることが保障されている gensym によって 生成されたシンボル (以下 gensym-symbol) を変数名に使う必要があります。 2.2. マクロ foronlisp の定義 マクロ for を使って多重評価と変数捕捉について説明したいと思います。 On Lisp にはさまざまなテクニックが解説されていますが、ここでは gensym を使