Parsing for kinds and types is implemented in [http://code.haskell.org/ddc/ddc-head/src/Source/Parser/Type.hs] [[br]] == Kinds == {{{ Kind ::= SimpleKind | SimpleKind -> Kind SimpleKind ::= ( Kind ) | * -- value type kind | % -- region kind | ! -- effect kind | $ -- closure kind | + -- witness kind }}} [[br]] == Types == {{{ Type ::= SimpleType | forall TyVarKind+ . ConstrainedType TyVarKind ::= TyVar | ( TyVar :: Kind ) -- check this ConstrainedType ::= SimpleType (:- Constraint ,Constraint*)? | Context => SimpleType (:- Constraint ,Constraint*)? | HsContext => SimpleType (:- Constraint ,Constraint*)? Context ::= ClassConstraint =>ClassConstraint* HsContext ::= ( ClassConstraint ,ClassConstraint* ) SimpleType ::= }}}