npt-japanese

% Special-Form SETQ

UP


Special-Form SETQ

Special Form SETQ

構文

setq {pair}* => result

*pair* ::= var form 

発音

[‘set,kyoo]

引数と戻り値

var - 定数ではない変数名のシンボル
form - フォーム
result - 最後のformの第一返却値か、pairがないときはnil

定義

変数に値を代入します。

(setq var1 form1 var2 form2 ...)がLispの単純な変数への代入構文です。 最初にform1が評価されて結果を変数var1に保存し、 そのあとform2が評価されて結果を変数var2に保存し、くり返します。 setqは、レキシカル変数と動的変数の両方の代入に使われます。

もし、どのvarでもsymbol-macroletによって 作られた束縛を参照したときは、 そのvarsetqではなくsetfとして扱われます。

例文

;; 変数へ値を代入する単純なSETQの使用
(setq a 1 b 2 c 3) =>  3
a =>  1
b =>  2
c =>  3

;; 値を順次代入して更新するSETQの使用
(setq a (1+ b) b (1+ a) c (+ a b)) =>  7
a =>  3
b =>  4
c =>  7

;; シンボルマクロ上のSETQの使用例
(let ((x (list 10 20 30)))
  (symbol-macrolet ((y (car x)) (z (cadr x)))
    (setq y (1+ z) z (1+ y))
    (list x y z)))
=>  ((21 22 30) 21 22)

副作用

formの第一返却値が対応するvarに代入されます。

影響

なし。

例外

なし。

参考

psetq, set, setf

備考

なし。


TOP, Github