Module

Type.Prelude

Re-exports from Type.Data.Boolean

#True

data True :: Boolean

The 'True' boolean type.

#False

data False :: Boolean

The 'False' boolean type.

#IsBoolean

class IsBoolean :: Boolean -> Constraintclass IsBoolean bool  where

Class for reflecting a type level Boolean at the value level

Members

Instances

#reifyBoolean

reifyBoolean :: forall r. Boolean -> (forall 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).

#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

class IsOrdering :: Ordering -> Constraintclass IsOrdering ordering  where

Class for reflecting a type level Ordering at the value level

Members

Instances

#reifyOrdering

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

Use a value level Ordering as a type-level Ordering

Re-exports from Type.Data.Symbol

#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

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

A class for known symbols

Members

#reifySymbol

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

#compare

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

#append

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

Re-exports from Type.Equality

#TypeEquals

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

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

#from

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

Re-exports from Type.Proxy

#Proxy

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

Proxy type for all kinds.

Constructors

Re-exports from Type.Row

#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

#ListToRow

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.

Modules