purescript- PureScript Programming Language Compiler

Safe HaskellNone



Data types for types



data Type Source

The type of types


TUnknown (TypedUnknown Type)

A unification variable of type Type


Javascript numbers


Javascript strings


Javascript booleans


Javascript array type constructor

Object Type

Records, parameterized by a row of types

Function [Type] Type

A function, with zero or more arguments

TypeVar String

A named type variable

TypeConstructor (Qualified ProperName)

A type constructor

TypeApp Type Type

A type application

SaturatedTypeSynonym (Qualified ProperName) [Type]

A type synonym which is "saturated", i.e. fully applied

ForAll String Type

Forall quantifier

ConstrainedType [(Qualified ProperName, Type)] Type

A type with a set of type class constraints

Skolem Int

A skolem constant


An empty row

RCons String Type Type

A non-empty row

rowToList :: Type -> ([(String, Type)], Type)Source

Convert a row to a list of pairs of labels and types

rowFromList :: ([(String, Type)], Type) -> TypeSource

Convert a list of labels and types to a row

isMonoType :: Type -> BoolSource

Check whether a type is a monotype

isPolyType :: Type -> BoolSource

Check whather a type is a valid polytype

mkForAll :: [String] -> Type -> TypeSource

Universally quantify a type

unit :: TypeSource

The empty record type

replaceTypeVars :: Data d => String -> Type -> d -> dSource

Replace a type variable, taking into account variable shadowing