Emacs Lisp: Lisp Special Form
Normally, arguments passed to a function are evaluated, in order. In elisp, this is called standard evaluation strategy.
However, for some function, evaluating arguments in order does not make sense. For example, conditional construct if
, or local variable construct let
. These functions, are said to have non-standard evaluation strategy.
Of functions that are non-standard evaluation, they are either macro or special form.
Macros are defined by lisp expressions with defmacro
. User can define them.
Special Forms are written in C.
Example of special forms:
and
or
catch
if
while
cond
condition-case
defconst
defvar
let
let*
prog1
prog2
progn
setq
setq-default
interactive
lambda
quote
function
save-current-buffer
save-excursion
save-restriction
track-mouse
unwind-protect