zm-0.3.1: Language independent, reproducible, absolute types

Safe HaskellNone
LanguageHaskell2010

ZM.Abs

Description

Derive absolute/canonical data type models

Synopsis

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