Purpose:
--------
-APPLICAT examines CALLs and rewrites them into calls to
-pseudo-primitives if the operator is not know. (using %internal-apply)
-In a few cases the CALL is not rewriten: QUOTE of a known-operator
-and not a primitive-procedure, or its primitive-procedure-name is not
-compiler:primitive-with-no-open-coding, LOOKUP with an a bound variable
-in a LETREC expression, LAMBDA.
-In a case where the operator is a QUOTE to an unknown operator and it is a
-primitive-procedure the CALL is rewriten with a CALL to %primitive-apply.
-In a CALL to a LAMBDA it gets rid of #!OPTIONAL and #!REST.
+
+APPLICAT rewrites CALLS to use explicit application pseudo-primitives
+like %internal-apply (aka funcall).
+
+Some operators are not rewritten.
+
+ . QUOTEd known-operator that will be open-coded. Known operators
+ which are primitive procedures may be excluded by placing their
+ names in the list COMPILER:PRIMITIVE-WITH-NO-OPEN-CODING
+ . LOOKUP with a variable bound in a LET or LETREC expression to a
+ LAMBDA.
+
+Two kinds of application primitives are used:
+ . %primitive-apply when the operator is a quoted primitive procedure
+ not handled as above.
+ . %internal-apply for all other operators - thet could be anything.
+
+In a CALL to a LAMBDA, #!OPTIONAL and #!REST arguments are replaced by
+expressions to construct the appropriate values.
Operators Introduced:
---------------------
Special forms introduced:
-------------------------
- none
+ none
Magic Cookies handled specially:
-------------------------------
-none
+ none
Guarantees on Output:
---------------------
- After this pass, CALLs only have the following kinds of operators:
+ After this pass, CALLs only have the following kinds of operators:
LAMBDA expressions, LOOKUP expressions where the variable is bound in
a LETREC expression, or known operators, including %internal-apply and
%primitive-apply.