Modulefirst-class-families-0.8.2.0
Fcf.Utils
- 13 types
- 1 class
- Packagefirst-class-families-0.8.2.0
- Exports17
- LicenceMIT
- SourceBool.hs
Instances2Eval
type Eval (Constraints '[]) = ()Defined in first-class-families-0.8.2.0 · Fcf.Utilstype Eval (Constraints (a ': as)) = (a, Eval (Constraints as))Defined in first-class-families-0.8.2.0 · Fcf.Utils
A description of a custom type error.
Constructors
Text SymbolShow the text as is.
forall t. ShowType tPretty print the type.
ShowType :: k -> ErrorMessageErrorMessage :<>: ErrorMessageinfixl 6Put two pieces of error message next to each other.
ErrorMessage :$$: ErrorMessageinfixl 5Stack two pieces of error message on top of each other.
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.")