Changes between Version 2 and Version 3 of TypeFunctionsIface


Ignore:
Timestamp:
Sep 11, 2006 12:53:48 AM (8 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TypeFunctionsIface

    v2 v3  
    33== Representation of family instances == 
    44 
    5 The `IfaceSyn.IfaceData` variant of `IfaceDecl` contains a new `ifFamInst :: Maybe IfaceFamInst` field that is distinguishes ordinary data/newtype declarations from family instances.  In the latter case, a `IfaceFamInst` value gives the instances head of the family instance.  Moreover, all family instance heads of a module are collected in the new `mi_fam_insts` field of `HscTypes.ModIface`. 
     5The `IfaceSyn.IfaceData` variant of `IfaceDecl` contains a new `ifFamInst :: Maybe IfaceFamInst` field that is distinguishes ordinary data/newtype declarations from family instances.  In the latter case, a `IfaceFamInst` value gives the instances head of the family instance.  Moreover, all family instance heads of a module are collected in the new `mi_fam_insts :: [(IfaceFamInst, IfaceDecl)]` field of `HscTypes.ModIface`.  We don't include the `IfaceDecl` component into `IfaceFamInst`, as we otherwise would get a cyclic dependency - the `IfaceDecl` must include `IfaceFamInst`, so that we can generate the correct wrapper signature for family data constructors during type checking the interface declarations.