% 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内に組み込まれた言語の
インタプリタを書くときに便利で、
動的変数を束縛する機構を提供します。