Next: Symbol Forms Up: Forms
A "self-evaluating form" is any form that is not a list or symbol.
Self-evaluating forms evaluate to themselves: the result of evaluation
is the same object that was evaluated. Thus, the number 25 evaluates to
25, and the string `"foo"' evaluates to the string `"foo"'. Likewise,
evaluation of a vector does not cause evaluation of the elements of the
vector--it returns the same vector with its contents unchanged.
'123 ; An object, shown without evaluation.
123 ; Evaluated as usual---result is the same.
(eval '123) ; Evaluated ``by hand''---result is the same.
(eval (eval '123)) ; Evaluating twice changes nothing.
It is common to write numbers, characters, strings, and even vectors
in Lisp code, taking advantage of the fact that they self-evaluate.
However, it is quite unusual to do this for types that lack a read
syntax, because it is inconvenient and not very useful; however, it is
possible to put them inside Lisp programs when they are constructed
from subexpressions rather than read. Here is an example:
;; Build such an expression.
(setq buffer (list 'print (current-buffer)))
=> (print #<buffer eval.texi>)
;; Evaluate it.
-| #<buffer eval.texi>
=> #<buffer eval.texi>
automatically generated by info2www