Changes between Version 11 and Version 12 of GhcKinds


Ignore:
Timestamp:
Aug 16, 2011 10:15:05 PM (4 years ago)
Author:
ia0
Comment:

Step 2

Legend:

Unmodified
Added
Removed
Modified
  • GhcKinds

    v11 v12  
    1919The implementation will follow these steps (in bold is the first phase (parser, renamer, type checker, ...) that does not work): 
    2020  1. Promotion of Haskell98 data types of kind star: {{{*}}}. 
    21   1. '''[parser]''' Promotion of Haskell98 data types of first order kind: {{{* -> .. * -> *}}}. It involves kind polymorphism. 
    22   1. Kind polymorphic data types, type families, and type classes. 
     21  1. Promotion of Haskell98 data types of first order kind: {{{* -> .. * -> *}}}. It involves kind polymorphism. 
     22  1. '''[*]''' Kind polymorphic data types, type families, and type classes. 
    2323  1. Singleton types. 
    2424  1. Built-in types. 
     
    2828    * Rename {{{rnHsType}}} into {{{rnHsTyKi}}} and parametrize with a boolean to know if we are renaming a type or a kind. 
    2929  * Allow promoted data and type constructors: 
    30     * Extend the parser to allow optionally ticked names as atoms in types and kinds. 
    31     * Extend {{{HsType name}}} with {{{HsPromotedConTy name}}} to represent ticked names. 
    32     * Extend the renamer to handle implicit promotion. 
    33     * Extend {{{TyCon}}} with {{{PromotedDataTyCon}}} and {{{PromotedTypeTyCon}}} to represent promoted data and type constructors. 
    34     * Extend the type checker accordingly. 
    35   * Rename {{{KindVar}}} which is used during type checking into {{{MetaKindVar}}}, since we will add kind variables later. 
     30    * Extend {{{TyCon}}} with {{{PromotedDataTyCon}}} to have data constructors in type constructors. 
     31    * Extend the parser, renamer, and type and kind checker accordingly. 
     32  * Rename {{{KindVar}}} which is used during type checking into {{{MetaKindVar}}}. 
    3633 
    3734Not promotion-related changelog: 
    3835  * Use {{{HsDocContext}}} instead of {{{SDoc}}} to track renaming context. 
     36  * Kind check and type check by strongly connected components, instead of kind checking the whole module, and then type checking it.  This implies that some modules now need additional kind annotations (since each strongly component gets zonkTcKindToKind before going to the next one). 
    3937 
    40