Kind

ghc-8.6.3: The GHC API

Safe Haskell | None
Language | Haskell2010

Kind

Contents

- Main data type
  - Predicates on Kinds

Synopsis

- type Kind = Type
- isLiftedTypeKind :: Kind -> Bool
- isUnliftedTypeKind :: Kind -> Bool
- isTYPEApp :: Kind -> Maybe DataCon
- isConstraintKindCon :: TyCon -> Bool
- classifiesTypeWithValues :: Kind -> Bool
- isKindLevPoly :: Kind -> Bool

# Main data type

type Kind = Type #

The key type representing kinds in the compiler.

## Predicates on Kinds

isLiftedTypeKind :: Kind -> Bool #

This version considers Constraint to be the same as *. Returns True if the argument is equivalent to Type/Constraint and False otherwise. See Note [Kind Constraint and kind Type]

isUnliftedTypeKind :: Kind -> Bool #

Returns True if the kind classifies unlifted types and False otherwise. Note that this returns False for levity-polymorphic kinds, which may be specialized to a kind that classifies unlifted types.

isTYPEApp :: Kind -> Maybe DataCon #

isConstraintKindCon :: TyCon -> Bool #

classifiesTypeWithValues :: Kind -> Bool #

Does this classify a type allowed to have values? Responds True to things like *, #, TYPE Lifted, TYPE v, Constraint.

True of any sub-kind of OpenTypeKind

isKindLevPoly :: Kind -> Bool #

Tests whether the given kind (which should look like `TYPE x`) is something other than a constructor tree (that is, constructors at every node). E.g. True of TYPE k, TYPE (F Int) False of TYPE 'LiftedRep