Changes between Version 17 and Version 18 of KindSystem


Ignore:
Timestamp:
Oct 17, 2008 2:24:14 PM (7 years ago)
Author:
TristanAllwood
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • KindSystem

    v17 v18  
    4646 
    4747----------------------------- 
     48 
    4849== Basic proposal == 
    4950 
     
    133134GADT constructors must only accept arguments of kind {{{*}}} (as per the restrictions on (->) described above), but may also collect constraints for the kind inference system. 
    134135 
    135 === Kind inference === 
    136  
    137 Kind inference figures out the kind of each type variable.   There are often ambiguous cases: 
    138 {{{ 
    139   data T a b = MkT (a b) 
    140 }}} 
    141 These are resolved by Haskell 98 with `(a :: *->*)` and `(b :: *)`.  We propose no change. 
    142 But see kind polymorphism below. 
    143  
    144  
    145136=== Interaction with Type Classes === 
    146137 
     
    162153By default declaration arguments are inferred to be of kind {{{*}}} if there is nothing in the class declaration (member functions or explicit kind signature) to change this.  This seems sensible for backward-compatibility. 
    163154 
    164 === Interaction with Type Synonym Families === 
    165  
    166 TODO 
    167 Also see: ClosedTypeFamilies 
    168  
    169  
    170 === Interaction with Data Type Families === 
     155=== Interaction with Data/Type Synonym Families === 
     156 
     157Follows as per type classes 
     158 
     159=== Kind inference === 
     160 
     161Kind inference figures out the kind of each type variable.   There are often ambiguous cases: 
     162{{{ 
     163  data T a b = MkT (a b) 
     164}}} 
     165 
     166These are resolved by Haskell 98 with `(a :: *->*)` and `(b :: *)`.  We propose no change. 
     167But see kind polymorphism below. 
     168 
    171169 
    172170-----------------------------------