Drop the trailing slash.
[emacs.git] / lispref / eval.texi
blob999f3b4b1c4e393e5e22ffc877168438590dd38b
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. 
4 @c See the file elisp.texi for copying conditions.
5 @setfilename ../info/eval
6 @node Evaluation, Control Structures, Symbols, Top
7 @chapter Evaluation
8 @cindex evaluation
9 @cindex  interpreter
10 @cindex interpreter
11 @cindex value of expression
13   The @dfn{evaluation} of expressions in Emacs Lisp is performed by the
14 @dfn{Lisp interpreter}---a program that receives a Lisp object as input
15 and computes its @dfn{value as an expression}.  How it does this depends
16 on the data type of the object, according to rules described in this
17 chapter.  The interpreter runs automatically to evaluate portions of
18 your program, but can also be called explicitly via the Lisp primitive
19 function @code{eval}.
21 @ifinfo
22 @menu
23 * Intro Eval::  Evaluation in the scheme of things.
24 * Eval::        How to invoke the Lisp interpreter explicitly.
25 * Forms::       How various sorts of objects are evaluated.
26 * Quoting::     Avoiding evaluation (to put constants in the program).
27 @end menu
29 @node Intro Eval
30 @section Introduction to Evaluation
32   The Lisp interpreter, or evaluator, is the program that computes
33 the value of an expression that is given to it.  When a function 
34 written in Lisp is called, the evaluator computes the value of the
35 function by evaluating the expressions in the function body.  Thus,
36 running any Lisp program really means running the Lisp interpreter.
38   How the evaluator handles an object depends primarily on the data
39 type of the object.
40 @end ifinfo
42 @cindex forms
43 @cindex expression
44   A Lisp object that is intended for evaluation is called an
45 @dfn{expression} or a @dfn{form}.  The fact that expressions are data
46 objects and not merely text is one of the fundamental differences
47 between Lisp-like languages and typical programming languages.  Any
48 object can be evaluated, but in practice only numbers, symbols, lists
49 and strings are evaluated very often.
51   It is very common to read a Lisp expression and then evaluate the
52 expression, but reading and evaluation are separate activities, and
53 either can be performed alone.  Reading per se does not evaluate
54 anything; it converts the printed representation of a Lisp object to the
55 object itself.  It is up to the caller of @code{read} whether this
56 object is a form to be evaluated, or serves some entirely different
57 purpose.  @xref{Input Functions}.
59   Do not confuse evaluation with command key interpretation.  The
60 editor command loop translates keyboard input into a command (an
61 interactively callable function) using the active keymaps, and then
62 uses @code{call-interactively} to invoke the command.  The execution of
63 the command itself involves evaluation if the command is written in
64 Lisp, but that is not a part of command key interpretation itself.
65 @xref{Command Loop}.
67 @cindex recursive evaluation
68   Evaluation is a recursive process.  That is, evaluation of a form may
69 call @code{eval} to evaluate parts of the form.  For example, evaluation
70 of a function call first evaluates each argument of the function call,
71 and then evaluates each form in the function body.  Consider evaluation
72 of the form @code{(car x)}: the subform @code{x} must first be evaluated
73 recursively, so that its value can be passed as an argument to the
74 function @code{car}.
76 @cindex environment
77   The evaluation of forms takes place in a context called the
78 @dfn{environment}, which consists of the current values and bindings of
79 all Lisp variables.@footnote{This definition of ``environment'' is
80 specifically not intended to include all the data that can affect the
81 result of a program.}  Whenever the form refers to a variable without
82 creating a new binding for it, the value of the binding in the current
83 environment is used.  @xref{Variables}.
85 @cindex side effect
86   Evaluation of a form may create new environments for recursive
87 evaluation by binding variables (@pxref{Local Variables}).  These
88 environments are temporary and vanish by the time evaluation of the form
89 is complete.  The form may also make changes that persist; these changes
90 are called @dfn{side effects}.  An example of a form that produces side
91 effects is @code{(setq foo 1)}.
93   Finally, evaluation of one particular function call, @code{byte-code},
94 invokes the @dfn{byte-code interpreter} on its arguments.  Although the
95 byte-code interpreter is not the same as the Lisp interpreter, it uses
96 the same environment as the Lisp interpreter, and may on occasion invoke
97 the Lisp interpreter.  (@xref{Byte Compilation}.)
99   The details of what evaluation means for each kind of form are
100 described below (@pxref{Forms}).
102 @node Eval
103 @section Eval
105   Most often, forms are evaluated automatically, by virtue of their
106 occurrence in a program being run.  On rare occasions, you may need to
107 write code that evaluates a form that is computed at run time, such as
108 after reading a form from text being edited or getting one from a
109 property list.  On these occasions, use the @code{eval} function.
111     The functions and variables described in this section evaluate
112 forms, specify limits to the evaluation process, or record recently
113 returned values.  Loading a file also does evaluation
114 (@pxref{Loading}).
116 @defun eval form
117 This is the basic function for performing evaluation.  It evaluates
118 @var{form} in the current environment and returns the result.  How the
119 evaluation proceeds depends on the type of the object (@pxref{Forms}).
121 Since @code{eval} is a function, the argument expression that appears
122 in a call to @code{eval} is evaluated twice: once as preparation before
123 @code{eval} is called, and again by the @code{eval} function itself.
124 Here is an example:
126 @example
127 @group
128 (setq foo 'bar)
129      @result{} bar
130 @end group
131 @group
132 (setq bar 'baz)
133      @result{} baz
134 ;; @r{@code{eval} receives argument @code{bar}, which is the value of @code{foo}}
135 (eval foo)
136      @result{} baz
137 (eval 'foo)
138      @result{} bar
139 @end group
140 @end example
142 The number of currently active calls to @code{eval} is limited to
143 @code{max-lisp-eval-depth} (see below).
144 @end defun
146 @cindex evaluation of buffer contents
147 @deffn Command eval-current-buffer &optional stream
148 This function evaluates the forms in the current buffer.  It reads
149 forms from the buffer and calls @code{eval} on them until the end of the
150 buffer is reached, or until an error is signaled and not handled.
152 If @var{stream} is supplied, the variable @code{standard-output} is
153 bound to @var{stream} during the evaluation (@pxref{Output
154 Functions}).
156 @code{eval-current-buffer} always returns @code{nil}.
157 @end deffn
159 @deffn Command eval-region start end &optional stream
160 This function evaluates the forms in the current buffer in the region
161 defined by the positions @var{start} and @var{end}.  It reads forms from
162 the region and calls @code{eval} on them until the end of the region is
163 reached, or until an error is signaled and not handled.
165 If @var{stream} is supplied, @code{standard-output} is bound to it
166 during the evaluation.
168 @code{eval-region} always returns @code{nil}.
169 @end deffn
171 @defvar max-lisp-eval-depth
172 This variable defines the maximum depth allowed in calls to @code{eval},
173 @code{apply}, and @code{funcall} before an error is signaled (with error
174 message @code{"Lisp nesting exceeds max-lisp-eval-depth"}).  This counts
175 internal uses of those functions, such as for calling the functions
176 mentioned in Lisp expressions, and recursive evaluation of function call
177 arguments and function body forms.
179 This limit, with the associated error when it is exceeded, is one way
180 that Lisp avoids infinite recursion on an ill-defined function.
181 @cindex Lisp nesting error
183 The default value of this variable is 200.  If you set it to a value
184 less than 100, Lisp will reset it to 100 if the given value is reached.
186 @code{max-specpdl-size} provides another limit on nesting.
187 @xref{Local Variables}.
188 @end defvar
190 @defvar values
191 The value of this variable is a list of the values returned by all the
192 expressions that were read from buffers (including the minibuffer),
193 evaluated, and printed.  The elements are ordered most recent first.
195 @example
196 @group
197 (setq x 1)
198      @result{} 1
199 @end group
200 @group
201 (list 'A (1+ 2) auto-save-default)
202      @result{} (A 3 t)
203 @end group
204 @group
205 values
206      @result{} ((A 3 t) 1 @dots{})
207 @end group
208 @end example
210 This variable is useful for referring back to values of forms recently
211 evaluated.  It is generally a bad idea to print the value of
212 @code{values} itself, since this may be very long.  Instead, examine
213 particular elements, like this:
215 @example
216 @group
217 ;; @r{Refer to the most recent evaluation result.}
218 (nth 0 values)
219      @result{} (A 3 t)
220 @end group
221 @group
222 ;; @r{That put a new element on,}
223 ;;   @r{so all elements move back one.}
224 (nth 1 values)
225      @result{} (A 3 t)
226 @end group
227 @group
228 ;; @r{This gets the element that was next-to-most-recent}
229 ;;   @r{before this example.}
230 (nth 3 values)
231      @result{} 1
232 @end group
233 @end example
234 @end defvar
236 @node Forms
237 @section Kinds of Forms
239   A Lisp object that is intended to be evaluated is called a @dfn{form}.
240 How Emacs evaluates a form depends on its data type.  Emacs has three
241 different kinds of form that are evaluated differently: symbols, lists,
242 and ``all other types''.  This section describes all three kinds,
243 starting with ``all other types'' which are self-evaluating forms.
245 @menu
246 * Self-Evaluating Forms::   Forms that evaluate to themselves.
247 * Symbol Forms::            Symbols evaluate as variables.
248 * Classifying Lists::       How to distinguish various sorts of list forms.
249 * Function Indirection::    When a symbol appears as the car of a list,
250                               we find the real function via the symbol.
251 * Function Forms::          Forms that call functions.
252 * Macro Forms::             Forms that call macros.
253 * Special Forms::           ``Special forms'' are idiosyncratic primitives,
254                               most of them extremely important.
255 * Autoloading::             Functions set up to load files
256                               containing their real definitions.
257 @end menu
259 @node Self-Evaluating Forms
260 @subsection Self-Evaluating Forms
261 @cindex vector evaluation
262 @cindex literal evaluation
263 @cindex self-evaluating form
265   A @dfn{self-evaluating form} is any form that is not a list or symbol.
266 Self-evaluating forms evaluate to themselves: the result of evaluation
267 is the same object that was evaluated.  Thus, the number 25 evaluates to
268 25, and the string @code{"foo"} evaluates to the string @code{"foo"}.
269 Likewise, evaluation of a vector does not cause evaluation of the
270 elements of the vector---it returns the same vector with its contents
271 unchanged.
273 @example
274 @group
275 '123               ; @r{An object, shown without evaluation.}
276      @result{} 123
277 @end group
278 @group
279 123                ; @r{Evaluated as usual---result is the same.}
280      @result{} 123
281 @end group
282 @group
283 (eval '123)        ; @r{Evaluated ``by hand''---result is the same.}
284      @result{} 123
285 @end group
286 @group
287 (eval (eval '123)) ; @r{Evaluating twice changes nothing.}
288      @result{} 123
289 @end group
290 @end example
292   It is common to write numbers, characters, strings, and even vectors
293 in Lisp code, taking advantage of the fact that they self-evaluate.
294 However, it is quite unusual to do this for types that lack a read
295 syntax, because there's no way to write them textually; however, it is
296 possible to construct Lisp expressions containing these types by means
297 of a Lisp program.  Here is an example:
299 @example
300 @group
301 ;; @r{Build an expression containing a buffer object.}
302 (setq buffer (list 'print (current-buffer)))
303      @result{} (print #<buffer eval.texi>)
304 @end group
305 @group
306 ;; @r{Evaluate it.}
307 (eval buffer)
308      @print{} #<buffer eval.texi>
309      @result{} #<buffer eval.texi>
310 @end group
311 @end example
313 @node Symbol Forms
314 @subsection Symbol Forms
315 @cindex symbol evaluation
317   When a symbol is evaluated, it is treated as a variable.  The result
318 is the variable's value, if it has one.  If it has none (if its value
319 cell is void), an error is signaled.  For more information on the use of
320 variables, see @ref{Variables}.
322   In the following example, we set the value of a symbol with
323 @code{setq}.  Then we evaluate the symbol, and get back the value that
324 @code{setq} stored.
326 @example
327 @group
328 (setq a 123)
329      @result{} 123
330 @end group
331 @group
332 (eval 'a)
333      @result{} 123
334 @end group
335 @group
337      @result{} 123
338 @end group
339 @end example
341   The symbols @code{nil} and @code{t} are treated specially, so that the
342 value of @code{nil} is always @code{nil}, and the value of @code{t} is
343 always @code{t}; you cannot set or bind them to any other values.  Thus,
344 these two symbols act like self-evaluating forms, even though
345 @code{eval} treats them like any other symbol.
347 @node Classifying Lists
348 @subsection Classification of List Forms
349 @cindex list form evaluation
351   A form that is a nonempty list is either a function call, a macro
352 call, or a special form, according to its first element.  These three
353 kinds of forms are evaluated in different ways, described below.  The
354 remaining list elements constitute the @dfn{arguments} for the function,
355 macro, or special form.
357   The first step in evaluating a nonempty list is to examine its first
358 element.  This element alone determines what kind of form the list is
359 and how the rest of the list is to be processed.  The first element is
360 @emph{not} evaluated, as it would be in some Lisp dialects such as
361 Scheme.
363 @node Function Indirection
364 @subsection Symbol Function Indirection
365 @cindex symbol function indirection
366 @cindex indirection
367 @cindex void function
369   If the first element of the list is a symbol then evaluation examines
370 the symbol's function cell, and uses its contents instead of the
371 original symbol.  If the contents are another symbol, this process,
372 called @dfn{symbol function indirection}, is repeated until it obtains a
373 non-symbol.  @xref{Function Names}, for more information about using a
374 symbol as a name for a function stored in the function cell of the
375 symbol.
377   One possible consequence of this process is an infinite loop, in the
378 event that a symbol's function cell refers to the same symbol.  Or a
379 symbol may have a void function cell, in which case the subroutine
380 @code{symbol-function} signals a @code{void-function} error.  But if
381 neither of these things happens, we eventually obtain a non-symbol,
382 which ought to be a function or other suitable object.
384 @kindex invalid-function
385 @cindex invalid function
386   More precisely, we should now have a Lisp function (a lambda
387 expression), a byte-code function, a primitive function, a Lisp macro, a
388 special form, or an autoload object.  Each of these types is a case
389 described in one of the following sections.  If the object is not one of
390 these types, the error @code{invalid-function} is signaled.
392   The following example illustrates the symbol indirection process.  We
393 use @code{fset} to set the function cell of a symbol and
394 @code{symbol-function} to get the function cell contents
395 (@pxref{Function Cells}).  Specifically, we store the symbol @code{car}
396 into the function cell of @code{first}, and the symbol @code{first} into
397 the function cell of @code{erste}.
399 @smallexample
400 @group
401 ;; @r{Build this function cell linkage:}
402 ;;   -------------       -----        -------        -------
403 ;;  | #<subr car> | <-- | car |  <-- | first |  <-- | erste |
404 ;;   -------------       -----        -------        -------
405 @end group
406 @end smallexample
408 @smallexample
409 @group
410 (symbol-function 'car)
411      @result{} #<subr car>
412 @end group
413 @group
414 (fset 'first 'car)
415      @result{} car
416 @end group
417 @group
418 (fset 'erste 'first)
419      @result{} first
420 @end group
421 @group
422 (erste '(1 2 3))   ; @r{Call the function referenced by @code{erste}.}
423      @result{} 1
424 @end group
425 @end smallexample
427   By contrast, the following example calls a function without any symbol
428 function indirection, because the first element is an anonymous Lisp
429 function, not a symbol.
431 @smallexample
432 @group
433 ((lambda (arg) (erste arg))
434  '(1 2 3)) 
435      @result{} 1
436 @end group
437 @end smallexample
439 @noindent
440 Executing the function itself evaluates its body; this does involve
441 symbol function indirection when calling @code{erste}.
443   The built-in function @code{indirect-function} provides an easy way to
444 perform symbol function indirection explicitly.
446 @c Emacs 19 feature
447 @defun indirect-function function
448 This function returns the meaning of @var{function} as a function.  If
449 @var{function} is a symbol, then it finds @var{function}'s function
450 definition and starts over with that value.  If @var{function} is not a
451 symbol, then it returns @var{function} itself.
453 Here is how you could define @code{indirect-function} in Lisp:
455 @smallexample
456 (defun indirect-function (function)
457   (if (symbolp function)
458       (indirect-function (symbol-function function))
459     function))
460 @end smallexample
461 @end defun
463 @node Function Forms
464 @subsection Evaluation of Function Forms
465 @cindex function form evaluation
466 @cindex function call
468   If the first element of a list being evaluated is a Lisp function
469 object, byte-code object or primitive function object, then that list is
470 a @dfn{function call}.  For example, here is a call to the function
471 @code{+}:
473 @example
474 (+ 1 x)
475 @end example
477   The first step in evaluating a function call is to evaluate the
478 remaining elements of the list from left to right.  The results are the
479 actual argument values, one value for each list element.  The next step
480 is to call the function with this list of arguments, effectively using
481 the function @code{apply} (@pxref{Calling Functions}).  If the function
482 is written in Lisp, the arguments are used to bind the argument
483 variables of the function (@pxref{Lambda Expressions}); then the forms
484 in the function body are evaluated in order, and the value of the last
485 body form becomes the value of the function call.
487 @node Macro Forms
488 @subsection Lisp Macro Evaluation
489 @cindex macro call evaluation
491   If the first element of a list being evaluated is a macro object, then
492 the list is a @dfn{macro call}.  When a macro call is evaluated, the
493 elements of the rest of the list are @emph{not} initially evaluated.
494 Instead, these elements themselves are used as the arguments of the
495 macro.  The macro definition computes a replacement form, called the
496 @dfn{expansion} of the macro, to be evaluated in place of the original
497 form.  The expansion may be any sort of form: a self-evaluating
498 constant, a symbol, or a list.  If the expansion is itself a macro call,
499 this process of expansion repeats until some other sort of form results.
501   Ordinary evaluation of a macro call finishes by evaluating the
502 expansion.  However, the macro expansion is not necessarily evaluated
503 right away, or at all, because other programs also expand macro calls,
504 and they may or may not evaluate the expansions.
506   Normally, the argument expressions are not evaluated as part of
507 computing the macro expansion, but instead appear as part of the
508 expansion, so they are computed when the expansion is computed.
510   For example, given a macro defined as follows:
512 @example
513 @group
514 (defmacro cadr (x)
515   (list 'car (list 'cdr x)))
516 @end group
517 @end example
519 @noindent
520 an expression such as @code{(cadr (assq 'handler list))} is a macro
521 call, and its expansion is:
523 @example
524 (car (cdr (assq 'handler list)))
525 @end example
527 @noindent
528 Note that the argument @code{(assq 'handler list)} appears in the
529 expansion.
531 @xref{Macros}, for a complete description of Emacs Lisp macros.
533 @node Special Forms
534 @subsection Special Forms
535 @cindex special form evaluation
537   A @dfn{special form} is a primitive function specially marked so that
538 its arguments are not all evaluated.  Most special forms define control
539 structures or perform variable bindings---things which functions cannot
542   Each special form has its own rules for which arguments are evaluated
543 and which are used without evaluation.  Whether a particular argument is
544 evaluated may depend on the results of evaluating other arguments.
546   Here is a list, in alphabetical order, of all of the special forms in
547 Emacs Lisp with a reference to where each is described.
549 @table @code
550 @item and
551 @pxref{Combining Conditions}
553 @item catch
554 @pxref{Catch and Throw}
556 @item cond
557 @pxref{Conditionals}
559 @item condition-case
560 @pxref{Handling Errors}
562 @item defconst
563 @pxref{Defining Variables}
565 @item defmacro
566 @pxref{Defining Macros}
568 @item defun
569 @pxref{Defining Functions}
571 @item defvar
572 @pxref{Defining Variables}
574 @item function
575 @pxref{Anonymous Functions}
577 @item if
578 @pxref{Conditionals}
580 @item interactive
581 @pxref{Interactive Call}
583 @item let
584 @itemx let*
585 @pxref{Local Variables}
587 @item or
588 @pxref{Combining Conditions}
590 @item prog1
591 @itemx prog2
592 @itemx progn
593 @pxref{Sequencing}
595 @item quote
596 @pxref{Quoting}
598 @item save-excursion
599 @pxref{Excursions}
601 @item save-restriction
602 @pxref{Narrowing}
604 @item save-window-excursion
605 @pxref{Window Configurations}
607 @item setq
608 @pxref{Setting Variables}
610 @item setq-default
611 @pxref{Creating Buffer-Local}
613 @item track-mouse
614 @pxref{Mouse Tracking}
616 @item unwind-protect
617 @pxref{Nonlocal Exits}
619 @item while
620 @pxref{Iteration}
622 @item with-output-to-temp-buffer
623 @pxref{Temporary Displays}
624 @end table
626 @cindex CL note---special forms compared
627 @quotation
628 @b{Common Lisp note:} Here are some comparisons of special forms in
629 GNU Emacs Lisp and Common Lisp.  @code{setq}, @code{if}, and
630 @code{catch} are special forms in both Emacs Lisp and Common Lisp.
631 @code{defun} is a special form in Emacs Lisp, but a macro in Common
632 Lisp.  @code{save-excursion} is a special form in Emacs Lisp, but
633 doesn't exist in Common Lisp.  @code{throw} is a special form in
634 Common Lisp (because it must be able to throw multiple values), but it
635 is a function in Emacs Lisp (which doesn't have multiple
636 values).@refill
637 @end quotation
639 @node Autoloading
640 @subsection Autoloading
642   The @dfn{autoload} feature allows you to call a function or macro
643 whose function definition has not yet been loaded into Emacs.  It
644 specifies which file contains the definition.  When an autoload object
645 appears as a symbol's function definition, calling that symbol as a
646 function automatically loads the specified file; then it calls the real
647 definition loaded from that file.  @xref{Autoload}.
649 @node Quoting
650 @section Quoting
651 @cindex quoting
653   The special form @code{quote} returns its single argument
654 ``unchanged''.
656 @defspec quote object
657 This special form returns @var{object}, without evaluating it.  This
658 provides a way to include constant symbols and lists, which are not
659 self-evaluating objects, in a program.  (It is not necessary to quote
660 self-evaluating objects such as numbers, strings, and vectors.)
662 @cindex @samp{'} for quoting
663 @cindex quoting using apostrophe
664 @cindex apostrophe for quoting
665 Because @code{quote} is used so often in programs, Lisp provides a
666 convenient read syntax for it.  An apostrophe character (@samp{'})
667 followed by a Lisp object (in read syntax) expands to a list whose first
668 element is @code{quote}, and whose second element is the object.  Thus,
669 the read syntax @code{'x} is an abbreviation for @code{(quote x)}.
671 Here are some examples of expressions that use @code{quote}:
673 @example
674 @group
675 (quote (+ 1 2))
676      @result{} (+ 1 2)
677 @end group
678 @group
679 (quote foo)
680      @result{} foo
681 @end group
682 @group
683 'foo
684      @result{} foo
685 @end group
686 @group
687 ''foo
688      @result{} (quote foo)
689 @end group
690 @group
691 '(quote foo)
692      @result{} (quote foo)
693 @end group
694 @group
695 ['foo]
696      @result{} [(quote foo)]
697 @end group
698 @end example
699 @end defspec
701   Other quoting constructs include @code{function} (@pxref{Anonymous
702 Functions}), which causes an anonymous lambda expression written in Lisp
703 to be compiled, and @code{`} (@pxref{Backquote}), which is used to quote
704 only part of a list, while computing and substituting other parts.