Special-Operator PROGV

UP


Special-Operator PROGV

Special Operator PROGV

構文

progv symbols values form* => result*

引数と戻り値

symbols シンボルのリスト、評価されます。
values - オブジェクトのリスト、評価されます。
form - 暗黙のprogn
result - formの返却値

定義

progvは、新しい動的変数の束縛を作成し、 それらの束縛を使うformを実行します。 各formは順番に実行されます。

progvは、実行時に名前を決めることができる、 ひとつか複数の動的変数の束縛をします。 各formは、symbols内の名前の動的変数に対応するvaluesを束縛した状態で、 順番に評価されます。 もしvaluesの値が少ないときは、 残りのsymbolsは束縛され、 そのあとで値を持っていない状態にします。 もしvaluesの値が多いときは、余分の値は無視されます。 動的変数の束縛は、progvの終了時に元に戻されます。

例文

(setq *x* 1) =>  1
(progv '(*x*) '(2) *x*) =>  2
*x* =>  1

;; *x*がグローバルでspecialではないとき、

(let ((*x* 3)) 
   (progv '(*x*) '(4) 
     (list *x* (symbol-value '*x*)))) =>  (3 4)

影響

なし。

例外

なし。

参考

let, 3.1. 評価

備考

特に、progvはLisp内に組み込まれた言語の インタプリタを書くときに便利で、 動的変数を束縛する機構を提供します。


TOP, Github