[project @ 2002-02-11 15:16:25 by simonpj]
authorsimonpj <unknown>
Mon, 11 Feb 2002 15:16:27 +0000 (15:16 +0000)
committersimonpj <unknown>
Mon, 11 Feb 2002 15:16:27 +0000 (15:16 +0000)
commit408439c03f074ed86b0bbe534c7210efb271b543
tree5105cd9749d333d65f4e7875a063b599a61b4603
parent0b78478f5248cd65ca2ffea9d597cdf412b4c924
[project @ 2002-02-11 15:16:25 by simonpj]
----------------------------------
Implement kinded type declarations
----------------------------------

This commit allows the programmer to supply kinds in
* data decls
* type decls
* class decls
* 'forall's in types

e.g.  data T (x :: *->*) = MkT

        type Composer c = forall (x :: * -> *) (y :: * -> *) (z :: * -> *).
          (c y z) -> (c x y) -> (c x z);

This is occasionally useful.

It turned out to be convenient to add the form

(type :: kind)

to the syntax of types too, so you can put kind signatures in types as well.
ghc/compiler/hsSyn/HsTypes.lhs
ghc/compiler/parser/Lex.lhs
ghc/compiler/parser/ParseUtil.lhs
ghc/compiler/parser/Parser.y
ghc/compiler/parser/RdrHsSyn.lhs
ghc/compiler/rename/ParseIface.y
ghc/compiler/rename/RnHsSyn.lhs
ghc/compiler/rename/RnTypes.lhs
ghc/compiler/typecheck/TcMonoType.lhs