Description of applicat.scm

Purpose:
--------

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:
---------------------
%internal-apply used to replace CALLs to unknown operators.

%primitive-apply used to replace CALLs to unknown primitive-procedures

Restrictions on Input:
----------------------
Special forms excluded: 
  ACCESS, DEFINE, DELAY, IN-PACKAGE, OR, SET!, THE-ENVIRONMENT
  UNASSIGNED?

Special forms introduced:
-------------------------
 none

Magic Cookies handled specially:
-------------------------------
 none

Guarantees on Output:
---------------------
  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.
