patch applied (ghc): Rough matches for family instances

chak at cse.unsw.edu.au chak at cse.unsw.edu.au
Tue Oct 10 00:55:22 EDT 2006


Mon Oct  9 21:46:56 PDT 2006  Manuel M T Chakravarty <chak at cse.unsw.edu.au>
  * Rough matches for family instances
  - Class and type family instances just got a lot more similar.
  - FamInst, like Instance, now has a rough match signature.  The idea is the
    same: if the rough match doesn't match, there is no need to pull in the while
    tycon describing the instance (from a lazily read iface).
  - IfaceFamInst changes in a similar way and the list of all IFaceFamInsts is
    now written into the binary iface (as for class instances), as deriving it
    from the tycon (as before) would render the whole rough matching useless.
  - As a result of this, the plumbing of class instances and type instances 
    through the various environments, ModIface, ModGuts, and ModDetails is now
    almost the same.  (The remaining difference are mostly because the dfun of a
    class instance is an Id, but type instance refer to a TyCon, not an Id.)
  
  *** WARNING: The interface file format changed! ***
  ***	     Rebuild from scratch.		***

    M ./compiler/deSugar/Desugar.lhs -15 +17
    M ./compiler/iface/BinIface.hs -5 +10
    M ./compiler/iface/IfaceSyn.lhs -20 +19
    M ./compiler/iface/IfaceType.lhs -2 +4
    M ./compiler/iface/LoadIface.lhs -20 +28
    M ./compiler/iface/MkIface.lhs -21 +35
    M ./compiler/iface/TcIface.lhs -13 +24
    M ./compiler/iface/TcIface.lhs-boot -8 +10
    M ./compiler/main/HscMain.lhs -3 +3
    M ./compiler/main/HscTypes.lhs -37 +34
    M ./compiler/main/TidyPgm.lhs -27 +31
    M ./compiler/typecheck/FamInst.lhs -4 +6
    M ./compiler/typecheck/TcInstDcls.lhs -2 +6
    M ./compiler/typecheck/TcRnDriver.lhs -26 +44
    M ./compiler/typecheck/TcRnMonad.lhs +1
    M ./compiler/typecheck/TcRnTypes.lhs -6 +7
    M ./compiler/types/FamInstEnv.lhs -27 +116


More information about the Cvs-ghc mailing list