Changes between Version 11 and Version 12 of TypeFunctionsIface


Ignore:
Timestamp:
May 7, 2007 6:41:10 AM (7 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TypeFunctionsIface

    v11 v12  
    55The `IfaceSyn.IfaceData` variant of `IfaceDecl` contains a new `ifFamInst :: Maybe (IfaceTyCon, [IfaceType])` field that distinguishes ordinary data/newtype declarations from family instances.  In the latter case, the `(IfaceTyCon, [IfaceType])` value gives the family instance type.  In addition, each family instance is represented by a value of type `IfaceFamInst` that includes the instances rough match (i.e., name of the family type and a `[Maybe IfaceTyCon]` value that gives the outermost type constructor of each index argument for that instance) and refers to the type declaration for full details (as a class instance does with its dfun). 
    66 
    7 Moreover, much like class instances, family instance heads of a module are collected in the new `mi_fam_insts :: [IfaceFamInst]` field of `HscTypes.ModIface`.  This allows to enter the rough matches into the `ModGuts`, when reading the interface, without having to parse the full tycon that represents the instance yet.  This in turn avoids pulling in everything that hangs of that tycon. 
     7Moreover, much like class instances, family instance heads of a module are collected in the new `mi_fam_insts :: [IfaceFamInst]` field of `HscTypes.ModIface`.  This allows to enter the rough matches into the `ExternalPackageState` or `ModDetails`, when reading the interface, without having to parse the full tycon that represents the instance yet.  This in turn avoids pulling in everything that hangs of that tycon. 
    88 
    99== Module dependencies due to family instances ==