Vanilla and Special Functions
Evaluation of a Quantum
Expr
proceeds according to whether its function is "vanilla" or "special". Most Quantum
functions and all user functions are vanilla. Arguments of vanilla functions
are
Evaluated
in sequence producing actuals that are passed to the function. Special
functions are different. The entire
Expr
is passed to the special function un
Evaluated
and the special function does whatever
Evaluation
it feels like doing. Predicates
IsFunction,
IsVanilla, and
IsSpecial
test if a name is a function, a vanilla function, and a special function respectively.
Special Functions in Quantum:
Add,
And,
Assert,
Bquote,
Break,
Case,
Cond,
Continue,
Decf,
Def,
DefArray,
DefProp,
DefStruct,
DefVar,
Export,
Global,
Go,
If,
Import,
Incf,
Lambda,
Let,
Local,
Loop,
Multiply,
Or,
Pop,
Prog,
Push,
PushNew,
Quote,
Seq,
Setq,
TrapAbort,
TrapError,
TypeCase,
Unbound,
Unless,
UnwindProtect, and
When
Reference Manual:
Evaluation
|