• Simon Peyton Jones's avatar
    Yet another major refactoring of the constraint solver · dd7522c3
    Simon Peyton Jones authored
    This is the result of Simon and Dimitrios doing a code walk through.
    There is no change in behaviour, but the structure is much better.
    Main changes:
    * Given constraints contain an EvTerm not an EvVar
    * Correspondingly, TcEvidence is a recursive types that uses
      EvTerms rather than EvVars
    * Rename CtFlavor to CtEvidence
    * Every CtEvidence has a ctev_pred field.  And use record fields
      consistently for CtEvidence
    * The solved-constraint fields of InertSet (namely inert_solved and
      inert_solved_funeqs) contain CtEvidence, not Ct
    There is a long cascade of follow-on changes.
TcSMonad.lhs 65.8 KB