(lispref.info)Special Forms


Next: Autoloading Prev: Macro Forms Up: Forms

Special Forms
-------------

   A "special form" is a primitive function specially marked so that
its arguments are not all evaluated.  Special forms define control
structures or perform variable bindings--things which functions cannot
do.

   Each special form has its own rules for which arguments are evaluated
and which are used without evaluation.  Whether a particular argument is
evaluated may depend on the results of evaluating other arguments.

   Here is a list, in alphabetical order, of all of the special forms in
Emacs Lisp with a reference to where each is described.

`and'
     Note: Combining Conditions.

`catch'
     Note: Catch and Throw.

`cond'
     Note: Conditionals.

`condition-case'
     Note: Handling Errors.

`defconst'
     Note: Defining Variables.

`defmacro'
     Note: Defining Macros.

`defun'
     Note: Defining Functions.

`defvar'
     Note: Defining Variables.

`function'
     Note: Anonymous Functions.

`if'
     Note: Conditionals.

`interactive'
     Note: Interactive Call.

`let'
`let*'
     Note: Local Variables.

`or'
     Note: Combining Conditions.

`prog1'
`prog2'
`progn'
     Note: Sequencing.

`quote'
     Note: Quoting.

`save-excursion'
     Note: Excursions.

`save-restriction'
     Note: Narrowing.

`save-window-excursion'
     Note: Window Configurations.

`setq'
     Note: Setting Variables.

`setq-default'
     Note: Creating Buffer-Local.

`unwind-protect'
     Note: Nonlocal Exits.

`while'
     Note: Iteration.

`with-output-to-temp-buffer'
     Note: Temporary Displays.

     Common Lisp note: here are some comparisons of special forms in
     GNU Emacs Lisp and Common Lisp.  `setq', `if', and `catch' are
     special forms in both Emacs Lisp and Common Lisp.  `defun' is a
     special form in Emacs Lisp, but a macro in Common Lisp.
     `save-excursion' is a special form in Emacs Lisp, but doesn't
     exist in Common Lisp.  `throw' is a special form in Common Lisp
     (because it must be able to throw multiple values), but it is a
     function in Emacs Lisp (which doesn't have multiple values).


automatically generated by info2www