Elisp: Special Form
Standard Evaluation Strategy
Normally, arguments passed to a function are evaluated, in order. In elisp, this is called standard evaluation strategy.
Non-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.
Macro and Special Form
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
andorcatchifwhilecondcondition-casedefconstdefvarletlet*prog1prog2prognsetqsetq-defaultinteractivelambdaquotefunctionsave-current-buffersave-excursionsave-restrictiontrack-mouseunwind-protect