Next: Generalized Variables, Previous: Control Structure, Up: Control Structure

### 5.1 Assignment

The `psetq` form is just like `setq`, except that multiple assignments are done in parallel rather than sequentially.

— Special Form: psetq [symbol form]...

> This special form (actually a macro) is used to assign to several variables simultaneously. Given only one symbol and form, it has the same effect as `setq`. Given several symbol and form pairs, it evaluates all the forms in advance and then stores the corresponding variables afterwards.

>               (setq x 2 y 3)
>               (setq x (+ x y)  y (* x y))
>               x
>                    ⇒ 5
>               y                     ; y was computed after x was set.
>                    ⇒ 15
>               (setq x 2 y 3)
>               (psetq x (+ x y)  y (* x y))
>               x
>                    ⇒ 5
>               y                     ; y was computed before x was set.
>                    ⇒ 6

> The simplest use of `psetq` is `(psetq x y y x)`, which exchanges the values of two variables. (The `rotatef` form provides an even more convenient way to swap two variables; see Modify Macros.)

> `psetq` always returns `nil`.