Module

Type.Prelude

Package
typelevel-prelude
Repository
purescript/purescript-typelevel-prelude

Re-exports from Type.Data.Boolean

#True

data True :: Boolean

The 'True' boolean type.

#False

data False :: Boolean

The 'False' boolean type.

#BProxy Source

data BProxy :: Boolean -> Typedata BProxy bool

Value proxy for Boolean types Deprecated: Use Type.Proxy instead

Constructors

#IsBoolean Source

class IsBoolean :: Boolean -> Constraintclass IsBoolean bool  where

Class for reflecting a type level Boolean at the value level

Members

Instances

#reifyBoolean Source

reifyBoolean :: forall r. Boolean -> (forall proxy o. IsBoolean o => proxy o -> r) -> r

Use a value level Boolean as a type-level Boolean

Re-exports from Type.Data.Ordering

#Ordering

data Ordering :: Type

The Ordering kind represents the three possibilities of comparing two types of the same kind: LT (less than), EQ (equal to), and GT (greater than).

#OProxy Source

data OProxy :: Ordering -> Typedata OProxy ordering

Value proxy for Ordering types Deprecated: Use Type.Proxy instead

Constructors

#LT

data LT :: Ordering

The 'less than' ordering type.

#GT

data GT :: Ordering

The 'greater than' ordering type.

#EQ

data EQ :: Ordering

The 'equal to' ordering type.

#IsOrdering Source

class IsOrdering :: Ordering -> Constraintclass IsOrdering ordering  where

Class for reflecting a type level Ordering at the value level

Members

Instances

#reifyOrdering Source

reifyOrdering :: forall r. Ordering -> (forall proxy o. IsOrdering o => proxy o -> r) -> r

Use a value level Ordering as a type-level Ordering

Re-exports from Type.Data.Symbol

#SProxy Source

data SProxy :: Symbol -> Typedata SProxy sym

A value-level proxy for a type-level symbol. Deprecated as of v0.14.0 PureScript release: use Type.Proxy instead.

Constructors

#Append

class Append (left :: Symbol) (right :: Symbol) (appended :: Symbol) | left right -> appended, right appended -> left, appended left -> right

Compiler solved type class for appending Symbols together.

#Compare

class Compare (left :: Symbol) (right :: Symbol) (ordering :: Ordering) | left right -> ordering

Compiler solved type class for comparing two Symbols. Produces an Ordering.

#IsSymbol Source

class IsSymbol :: Symbol -> Constraintclass IsSymbol (sym :: Symbol)  where

A class for known symbols

Members

#reifySymbol Source

reifySymbol :: forall proxy r. String -> (forall sym. IsSymbol sym => proxy sym -> r) -> r

#compare Source

compare :: forall proxy l r o. Compare l r o => proxy l -> proxy r -> Proxy o

#append Source

append :: forall proxy l r o. Append l r o => proxy l -> proxy r -> Proxy o

Re-exports from Type.Equality

#TypeEquals Source

class TypeEquals :: forall k. k -> k -> Constraintclass (Coercible a b) <= TypeEquals a b | a -> b, b -> a

This type class asserts that types a and b are equal.

The functional dependencies and the single instance below will force the two type arguments to unify when either one is known.

Note: any instance will necessarily overlap with refl below, so instances of this class should not be defined in libraries.

Instances

#to Source

to :: forall a b. TypeEquals a b => a -> b

#from Source

from :: forall a b. TypeEquals a b => b -> a

Re-exports from Type.Proxy

#Proxy Source

data Proxy :: forall k. k -> Typedata Proxy a

Proxy type for all kinds.

Constructors

Re-exports from Type.Row

#RProxy Source

data RProxy :: Row Type -> Typedata RProxy row

A proxy data type whose type parameter is a type of kind Row Type (a row of types).

Deprecated as of v0.14.0 PureScript release: use Type.Proxy instead.

Commonly used for specialising a function with a quantified type. For example, suppose we have an identity function for records of type:

recordIdentity :: forall row . RProxy row -> Record row -> Record row
recordIdentity _ rec = rec

Then applying this function to an RProxy with a specialised type allows us to specify a concrete type for row:

:t recordIdentity (Proxy :: Proxy ( x :: Int, y :: Int ))
{ x :: Int, y :: Int } -> { x :: Int, y :: Int }

Here row has been specialised to ( x :: Int, y :: Int ).

Constructors

#Lacks

class Lacks (label :: Symbol) (row :: Row k) 

The Lacks type class asserts that a label does not occur in a given row.

#Union

class Union (left :: Row k) (right :: Row k) (union :: Row k) | left right -> union, right union -> left, union left -> right

The Union type class is used to compute the union of two rows of types (left-biased, including duplicates).

The third type argument represents the union of the first two.

Re-exports from Type.RowList

#RLProxy Source

data RLProxy :: RowList Type -> Typedata RLProxy rowlist

A proxy to carry information about a rowlist. Deprecated as of v0.14.0 PureScript release: use Type.Proxy instead.

Constructors

#ListToRow Source

class ListToRow :: forall k. RowList k -> Row k -> Constraintclass ListToRow list row | list -> row

Convert a RowList to a row of types. The inverse of this operation is RowToList.

Instances

#RowToList

class RowToList (row :: Row k) (list :: RowList k) | row -> list

Compiler solved type class for generating a RowList from a closed row of types. Entries are sorted by label and duplicates are preserved in the order they appeared in the row.