Special Forms
-------------
A "special form" is a primitive function specially marked so that
its arguments are not all evaluated. Most 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-current-buffer'
Note:Current Buffer
`save-excursion'
Note:Excursions
`save-restriction'
Note:Narrowing
`save-window-excursion'
Note:Window Configurations
`setq'
Note:Setting Variables
`setq-default'
Note:Creating Buffer-Local
`track-mouse'
Note:Mouse Tracking
`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).