Changes between Version 14 and Version 15 of GhcKinds
- Timestamp:
- 08/26/11 05:41:37 (21 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GhcKinds
v14 v15 17 17 == Implementation == 18 18 19 The GHC branch is called {{{ghc-kinds}}}. There is also a Haddock branch with the same name. Hoopl needs a kind annotation available on a branch in [http://darcs.haskell.org/git-mirrors/hoopl/]. 20 21 The implementation will follow these steps (in bold is the first phase (parser, renamer, type checker, ...) that does not work): 19 The GHC branch is called {{{ghc-kinds}}}. There is also a branch with the same name for haddock and the testsuite. The implementation will follow these steps (in bold is the first phase (parser, renamer, type checker, ...) that does not work): 22 20 1. Promotion of Haskell98 data types of kind star: {{{*}}}. 23 21 1. Promotion of Haskell98 data types of first order kind: {{{* -> .. * -> *}}}. It involves kind polymorphism. 24 1. '''[ *]''' Kind polymorphic data types, type families, and type classes.22 1. '''[theory design]''' Kind polymorphic data types, type families, and type classes. 25 23 1. Singleton types. 26 24 1. Built-in types. 27 25 28 26 Promotion-related changelog: 27 * Extend {{{TyCon}}} with {{{PromotedDataTyCon}}} to have data constructors in type constructors. 28 * Extend the parser, renamer, type and kind checker, and core-lint accordingly. 29 30 31 Not promotion-related changelog: 29 32 * Change the kind representation in {{{HsSyn}}} from {{{Kind}}} to {{{LHsKind name}}} adding some {{{PostTcKind}}} when necessary. 30 33 * Rename {{{rnHsType}}} into {{{rnHsTyKi}}} and parametrize with a boolean to know if we are renaming a type or a kind. 31 * Allow promoted data and type constructors: 32 * Extend {{{TyCon}}} with {{{PromotedDataTyCon}}} to have data constructors in type constructors. 33 * Extend the parser, renamer, type and kind checker, and core-lint accordingly. 34 * Use {{{HsDocContext}}} instead of {{{SDoc}}} to track renaming context. 35 * 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). 34 36 * Rename {{{KindVar}}} which is used during type checking into {{{MetaKindVar}}}. 35 37 36 Not promotion-related changelog:37 * Use {{{HsDocContext}}} instead of {{{SDoc}}} to track renaming context.38 * 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).39
