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
(=> 1
*x*
;; *x*がグローバルでspecialではないとき、
let ((*x* 3))
(progv '(*x*) '(4)
(list *x* (symbol-value '*x*)))) => (3 4) (
なし。
なし。
let
, 3.1. 評価
特に、progv
はLisp内に組み込まれた言語の インタプリタを書くときに便利で、 動的変数を束縛する機構を提供します。