Previous: Using setq, Up: set & setq

Here is an example that shows how to use `setq`

in a counter. You
might use this to count how many times a part of your program repeats
itself. First set a variable to zero; then add one to the number each
time the program repeats itself. To do this, you need a variable that
serves as a counter, and two expressions: an initial `setq`

expression that sets the counter variable to zero; and a second
`setq`

expression that increments the counter each time it is
evaluated.

(setq counter 0) ; Let's call this the initializer. (setq counter (+ counter 1)) ; This is the incrementer. counter ; This is the counter.

(The text following the ‘`;`’ are comments. See Change a Function Definition.)

If you evaluate the first of these expressions, the initializer,
`(setq counter 0)`

, and then evaluate the third expression,
`counter`

, the number `0`

will appear in the echo area. If
you then evaluate the second expression, the incrementer, ```
(setq
counter (+ counter 1))
```

, the counter will get the value 1. So if you
again evaluate `counter`

, the number `1`

will appear in the
echo area. Each time you evaluate the second expression, the value of
the counter will be incremented.

When you evaluate the incrementer, `(setq counter (+ counter 1))`

,
the Lisp interpreter first evaluates the innermost list; this is the
addition. In order to evaluate this list, it must evaluate the variable
`counter`

and the number `1`

. When it evaluates the variable
`counter`

, it receives its current value. It passes this value and
the number `1`

to the `+`

which adds them together. The sum
is then returned as the value of the inner list and passed to the
`setq`

which sets the variable `counter`

to this new value.
Thus, the value of the variable, `counter`

, is changed.