9.2 Support Functions for Eval and Apply
(evlis U:any-list): any-list expr
Evlis evaluates each element of U The list of results is returned.
(de evlis (p)
(if (not (pairp p))
(cons (eval (first u))
(evlis (rest u)))))
(idapply FN:id U:any-list): any expr
Applies the function referenced by FN to the argument list U. An equivalent
form would be (apply FN U). The use of idapply is more efficient. If FN is
not an id it is an error and the message
⋆⋆⋆⋆⋆ Ill-formed function expression
(codeapply FN:code-pointer U:any-list): any expr
The body of compiled function referenced by FN is executed with
arguments in U.
(codeevalapply FN:code-pointer U:any-list): any expr
(codeevalapply FN U) is essentially (codeapply FN (evlis U)). The
difference between the two is that the first is more efficient than the second.
(evprogn U:form-list): any expr
The forms in U are evaluated in a left to right order. The value of the
last is returned. This function is used in situations where an application of
progn is implied. For example, the definition of many functions consists of
a sequence of expressions. Each expression is evaluated and the value of the
last is returned, without having to wrap the definition inside a progn.
(de evprogn (u)
(if (pairp u)
(progn (while (pairp (cdr u))
(eval (car u))
(setq u (cdr u)))
(eval (car u)))