www.delorie.com/gnu/docs/emacs/cl_14.html   search  
Buy the book!

Common Lisp Extensions

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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))
     => 5
y                     ; y was computed after x was set.
     => 15
(setq x 2 y 3)
(psetq x (+ x y)  y (* x y))
     => 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 section 5.2.2 Modify Macros.)

psetq always returns nil.

  webmaster     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003