Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- type Type = *
- type family TypeError (a :: ErrorMessage) :: b where ...
- data ErrorMessage where
Documentation
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.
Text :: ErrorMessage | Show the text as is. |
ShowType :: ErrorMessage | Pretty print the type.
|
(:<>:) :: 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. |