Changes by: Aleksey Nogin (nogin at cs.caltech.edu)
Date: 2005-03-23 21:58:46 -0800 (Wed, 23 Mar 2005)
Revision: 7023
Log message:
Finished an exersise in making the type for the sweep operator more precise.
(The bulk of it was pretty simple, but getting the details right ended up
somewhat tricky).
Couple of hightlights:
- The Mmc_core_sweep.sweep_add_start rewrite now typechecks without any bogus
"helper" argument (which was the initial motivation for this change).
- I've hacked "proper" polymorphism for the sweeper as well. For example,
the "sweeping is always legal" in Mmc_lir_closure_elim is now stated simply
as:
prim_rw sweep_exp {| sweep |} :
<:tast< sweep#elim <env> -> poly e >>
<-->
<:tast< sweepdn#elim <env> -> poly e >>
instead of separate rewrites for "exp e" and "type e".