Changes between Version 23 and Version 24 of TypeFunctionsTypeChecking
- Timestamp:
- 08/18/06 14:33:39 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TypeFunctionsTypeChecking
v23 v24 64 64 ==== The `DataCon`s of the variants of an instance ==== 65 65 66 `DataCon`s of data instances differ from ordinary `DataCon`s by a value of the form `Just typats :: Maybe [Type]` in the new field `dcInst Pats`. It gives the instance patterns at which the data constructor has been declared; e.g., given the declaration66 `DataCon`s of data instances differ from ordinary `DataCon`s by a value of the form `Just typats :: Maybe [Type]` in the new field `dcInstTys`. It gives the instance patterns at which the data constructor has been declared; e.g., given the declaration 67 67 {{{ 68 68 data instance Map (a, b) v = MapPair (Map a (Map b v)) 69 69 }}} 70 the instance patterns are `[(a, b), v]`. Whenever the field `dcInstPats` of a `DataCon` is not `Nothing`, the field `algTcParent` of its `TyCon` must be of the form `FamilyTyCon famTyCon`, where `famTyCon` is the `TyCon` of the data family to which the instance belongs. The exact same information goes into the interface representation `IfaceSyn.IfaceConDecl` with the new field `ifInstPats`.70 the instance types are `[(a, b), v]`. Whenever the field `dcInstPats` of a `DataCon` is not `Nothing`, the field `algTcParent` of its `TyCon` must be of the form `FamilyTyCon famTyCon`, where `famTyCon` is the `TyCon` of the data family to which the instance belongs. The exact same information goes into the interface representation `IfaceSyn.IfaceConDecl` with the new field `ifConInstTys`. 71 71 72 72 ==== The equality axiom identifying family instance and representation type ====
