GNU Info

Info Node: (emacs-lisp-intro.info)Counting

(emacs-lisp-intro.info)Counting


Prev: Using setq Up: set & setq
Enter node , (file) or (file)node

Counting
--------

   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.  Note: 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.


automatically generated by info2www version 1.2.2.9