Next: , Up: set & setq

1.9.1 Using set

To set the value of the symbol flowers to the list '(rose violet daisy buttercup), evaluate the following expression by positioning the cursor after the expression and typing C-x C-e.

     (set 'flowers '(rose violet daisy buttercup))

The list (rose violet daisy buttercup) will appear in the echo area. This is what is returned by the set function. As a side effect, the symbol flowers is bound to the list; that is, the symbol flowers, which can be viewed as a variable, is given the list as its value. (This process, by the way, illustrates how a side effect to the Lisp interpreter, setting the value, can be the primary effect that we humans are interested in. This is because every Lisp function must return a value if it does not get an error, but it will only have a side effect if it is designed to have one.)

After evaluating the set expression, you can evaluate the symbol flowers and it will return the value you just set. Here is the symbol. Place your cursor after it and type C-x C-e.

     flowers

When you evaluate flowers, the list (rose violet daisy buttercup) appears in the echo area.

Incidentally, if you evaluate 'flowers, the variable with a quote in front of it, what you will see in the echo area is the symbol itself, flowers. Here is the quoted symbol, so you can try this:

     'flowers

Note also, that when you use set, you need to quote both arguments to set, unless you want them evaluated. Since we do not want either argument evaluated, neither the variable flowers nor the list (rose violet daisy buttercup), both are quoted. (When you use set without quoting its first argument, the first argument is evaluated before anything else is done. If you did this and flowers did not have a value already, you would get an error message that the ‘Symbol's value as variable is void’; on the other hand, if flowers did return a value after it was evaluated, the set would attempt to set the value that was returned. There are situations where this is the right thing for the function to do; but such situations are rare.)