planet-mitchell-0.1.0: Planet Mitchell

Type

Synopsis

# Documentation

type Type = * #

The kind of types with values. For example Int :: Type.

type family TypeError (a :: ErrorMessage) :: b where ... #

The type-level equivalent of error.

The polymorphic kind of this type allows it to be used in several settings. For instance, it can be used as a constraint, e.g. to provide a better error message for a non-existent instance,

-- in a context
instance TypeError (Text "Cannot Show functions." :$$: Text "Perhaps there is a missing argument?") => Show (a -> b) where showsPrec = error "unreachable"  It can also be placed on the right-hand side of a type-level function to provide an error for an invalid case, type family ByteSize x where ByteSize Word16 = 2 ByteSize Word8 = 1 ByteSize a = TypeError (Text "The type " :<>: ShowType a :<>: Text " is not exportable.")  Since: base-4.9.0.0 data ErrorMessage where # A description of a custom type error. Constructors  Text :: ErrorMessage Show the text as is. ShowType :: ErrorMessage Pretty print the type. ShowType :: k -> ErrorMessage (:<>:) :: ErrorMessage infixl 6 Put two pieces of error message next to each other. (:$$:) :: ErrorMessage infixl 5 Stack two pieces of error message on top of each other.