Changes between Version 178 and Version 179 of TypeFunctionsStatus

Aug 29, 2007 12:26:14 PM (10 years ago)



  • TypeFunctionsStatus

    v178 v179  
    77 0. Fix core-lint breakage in cholewo-eval.
    88 0. The tests `tcfail068` and `rw` used to raise more type errors right away.  Now, we see less recovery.
    9  0. To fix Roman's GADT1 test, proceed as follows (as suggested by SPJ):
    10    * `TcGadt.uUnrefined`: the occurs check needs to be more subtle.  If the variable occurs, but does so under a type family application, do not fail, but just defer.
    11    * This requires a function `Types.tyVarsOfTypeDefinite` that returns only those variables not occurring under type family applications.
    12    * Moreover, the unification monad `UM` must be extended to be able to collect `EqInst` for later insertion into the LIE.
    13    * We may have to do the same for other occurs checks.
    14    * And we '''definitely''' need the whole deferral machinery for the GADT unification in `TcGadt`.
     9 0. To move GADT type checking from refinements to using equalities, proceed as follows (as suggested by SPJ):
     10    * In `TcPat.tcConPat`:
     11      * set `eq_spec' = []`, to get an empty refinement
     12      * add the equalities from `eq_spec` to `theta'` (to propagate them instead of the refinement)
     13    * Test whether this works (it basically disables the refinement mechanism without deleting it)
     14    * In `TcUnify`, make all occurs checks more elaborate.  They should only '''defer''' if the checked variable occurs as part of an argument to a type family application; in other cases, still fail right away.
     15    * `TcGadt.tcUnifyTys` can now probably be replaced again by the non-side-effecting unifier that was in `types/Unify.hs` (recover from previous repo states).
    1718 * Add more details about type families to the !HaskellWiki page; especially, the constraints on decidable type instances and -fallow-undecidable-instances.
    18  * Add some wiki documentation of how inference with type families works.
     19 * Add some trac wiki documentation of how inference with type families works.
    2021== Parsing and Renaming ==