progv
(progv symbols values body...)
symbols と values(それぞれリスト)を評価し、各シンボルを対応する値に body の実行中はダイナミックに束縛し、脱出時に以前の値を復元します。values が symbols より短い場合、余ったシンボルは nil に束縛されます。let と異なり、シンボルは実行時に計算され、スペシャル宣言されている必要はありません。最後の本体フォームの値を返します。
progv はすべてのバックエンドで動作します。コンパイラは、プログラム中で静的に判明しているスペシャル変数の集合に対するディスパッチへ展開します。プログラムのスペシャル変数であるシンボルは本来のダイナミック束縛を受け、それ以外のシンボルも束縛の間は symbol-value と boundp から見えるように束縛されます。コンパイルされる WASM プログラムで progv を使うと例外処理モードでコンパイルされます。