Safe Haskell | None |
---|---|
Language | Haskell2010 |
Derive absolute/canonical data type models
- absType :: Model a => Proxy a -> AbsType
- absTypeModel :: Model a => Proxy a -> AbsTypeModel
- absTypeModelMaybe :: Model a => Proxy a -> Either Errors AbsTypeModel
- absEnv :: Map QualName (ADT String String (TypeRef QualName)) -> Either Errors AbsEnv
- refErrors :: AbsEnv -> Errors
- kindErrors :: AbsEnv -> Errors
Documentation
absType :: Model a => Proxy a -> AbsType Source #
Derive an absolute type for a type, or throw an error if derivation is impossible
absTypeModel :: Model a => Proxy a -> AbsTypeModel Source #
Derive an absolute type model for a type, or throw an error if derivation is impossible
absTypeModelMaybe :: Model a => Proxy a -> Either Errors AbsTypeModel Source #
Derive an absolute type model for a type, provided that:
- is an instance of Model
no data type referred directly or indirectly by the type:
- has higher kind variables
- is mutually recursive with other data types
refErrors :: AbsEnv -> Errors Source #
Check that all internal references in the ADT definitions are to ADTs defined in the environment
kindErrors :: AbsEnv -> Errors Source #
Check that all type expressions have kind *: * Type constructors are fully applied * Type variables have * kind