purescript- PureScript Programming Language Compiler

Safe HaskellNone



Data types for types



newtype SkolemScope Source

An identifier for the scope of a skolem variable




runSkolemScope :: Int

data Type Source

The type of types


TUnknown Int

A unification variable of type Type

TypeVar String

A named type variable


A type wildcard, as would appear in a partial type synonym

TypeConstructor (Qualified (ProperName TypeName))

A type constructor

TypeApp Type Type

A type application

ForAll String Type (Maybe SkolemScope)

Forall quantifier

ConstrainedType [Constraint] Type

A type with a set of type class constraints

Skolem String Int SkolemScope (Maybe SourceSpan)

A skolem constant


An empty row

RCons String Type Type

A non-empty row

KindedType Type Kind

A type with a kind annotation

PrettyPrintFunction Type Type

A placeholder used in pretty printing

PrettyPrintObject Type

A placeholder used in pretty printing

PrettyPrintForAll [String] Type

A placeholder used in pretty printing

type Constraint = (Qualified (ProperName ClassName), [Type]) Source

A typeclass constraint

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

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

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

Convert a list of labels and types to a row

isMonoType :: Type -> Bool Source

Check whether a type is a monotype

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

Universally quantify a type

replaceTypeVars :: String -> Type -> Type -> Type Source

Replace a type variable, taking into account variable shadowing

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

Replace named type variables with types

usedTypeVariables :: Type -> [String] Source

Collect all type variables appearing in a type

freeTypeVariables :: Type -> [String] Source

Collect all free type variables appearing in a type

quantify :: Type -> Type Source

Universally quantify over all type variables appearing free in a type

moveQuantifiersToFront :: Type -> Type Source

Move all universal quantifiers to the front of a type

containsWildcards :: Type -> Bool Source

Check if a type contains wildcards

everythingOnTypes :: (r -> r -> r) -> (Type -> r) -> Type -> r Source

everythingWithContextOnTypes :: s -> r -> (r -> r -> r) -> (s -> Type -> (s, r)) -> Type -> r Source