Description of simplify.scm Purpose: -------- SIMPLIFY is a general optimization phase, called several times. It is the dual of CLEANUP and works in conjunction with it. It examines variable bindings and rewrites CALLs with LOOKUP operators into CALLs with LAMBDA operators which CLEANUP will then reduce further. (It does that if it is a lambda without ordinary refs and either only one operator ref or the the value is a call to a lookup. Also if the length of the ordinary and the length of the operator ref equals 1 and the binding is simple and side effect free or insensitive). If the lambda expression is simple enough then it removes the binding and removes the lookup and just assignes the values straight to the variable and leaves the let with no variables. 1st-half of beta substitution replace variable operators with lambda expressions Operators Introduced: --------------------- none 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: --------------------- none