| Copyright | (C) 2018 Ryan Scott |
|---|---|
| License | BSD-style (see LICENSE) |
| Maintainer | Ryan Scott |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Singletons.TypeError
Contents
Description
Defines a drop-in replacement for TypeError (from GHC.TypeLits)
that can be used at the value level as well. Since this is a drop-in
replacement, it is not recommended to import all of GHC.TypeLits
and Data.Singletons.TypeError at the same time, as many of the definitons
in the latter deliberately clash with the former.
Synopsis
- type family TypeError (a :: PErrorMessage) :: b where ...
- sTypeError :: HasCallStack => Sing err -> Sing (TypeError err)
- typeError :: HasCallStack => ErrorMessage -> a
- data ErrorMessage' s
- = Text s
- | forall t. ShowType t
- | (ErrorMessage' s) :<>: (ErrorMessage' s)
- | (ErrorMessage' s) :$$: (ErrorMessage' s)
- type ErrorMessage = ErrorMessage' Text
- type PErrorMessage = ErrorMessage' Symbol
- type family Sing :: k -> Type
- data SErrorMessage :: PErrorMessage -> Type where
- SText :: Sing t -> SErrorMessage ('Text t)
- SShowType :: Sing ty -> SErrorMessage ('ShowType ty)
- (:%<>:) :: Sing e1 -> Sing e2 -> SErrorMessage (e1 :<>: e2)
- (:%$$:) :: Sing e1 -> Sing e2 -> SErrorMessage (e1 :$$: e2)
- type family ConvertPErrorMessage (a :: PErrorMessage) :: ErrorMessage where ...
- showErrorMessage :: ErrorMessage -> String
- data TextSym0 :: forall (s6989586621681327330 :: Type). (~>) s6989586621681327330 (ErrorMessage' (s6989586621681327330 :: Type))
- type TextSym1 (t6989586621681328074 :: s6989586621681327330) = 'Text t6989586621681328074
- data ShowTypeSym0 :: forall t6989586621681327331 (s6989586621681327330 :: Type). (~>) t6989586621681327331 (ErrorMessage' (s6989586621681327330 :: Type))
- type ShowTypeSym1 (t6989586621681328076 :: t6989586621681327331) = 'ShowType t6989586621681328076
- data (:<>:@#@$) :: forall (s6989586621681327330 :: Type). (~>) (ErrorMessage' s6989586621681327330) ((~>) (ErrorMessage' s6989586621681327330) (ErrorMessage' (s6989586621681327330 :: Type)))
- data (:<>:@#@$$) (t6989586621681328078 :: ErrorMessage' (s6989586621681327330 :: Type)) :: (~>) (ErrorMessage' s6989586621681327330) (ErrorMessage' (s6989586621681327330 :: Type))
- type (:<>:@#@$$$) (t6989586621681328078 :: ErrorMessage' s6989586621681327330) (t6989586621681328079 :: ErrorMessage' s6989586621681327330) = '(:<>:) t6989586621681328078 t6989586621681328079
- data (:$$:@#@$) :: forall (s6989586621681327330 :: Type). (~>) (ErrorMessage' s6989586621681327330) ((~>) (ErrorMessage' s6989586621681327330) (ErrorMessage' (s6989586621681327330 :: Type)))
- data (:$$:@#@$$) (t6989586621681328082 :: ErrorMessage' (s6989586621681327330 :: Type)) :: (~>) (ErrorMessage' s6989586621681327330) (ErrorMessage' (s6989586621681327330 :: Type))
- type (:$$:@#@$$$) (t6989586621681328082 :: ErrorMessage' s6989586621681327330) (t6989586621681328083 :: ErrorMessage' s6989586621681327330) = '(:$$:) t6989586621681328082 t6989586621681328083
- data TypeErrorSym0 :: forall b6989586621681327314. (~>) PErrorMessage b6989586621681327314
- type TypeErrorSym1 (a6989586621681327315 :: PErrorMessage) = TypeError a6989586621681327315
Documentation
type family TypeError (a :: PErrorMessage) :: b where ... Source #
A drop-in replacement for TypeError. This also exists at the
value-level as typeError.
Equations
| TypeError a = TypeError (ConvertPErrorMessage a) |
typeError :: HasCallStack => ErrorMessage -> a Source #
data ErrorMessage' s Source #
A description of a custom type error.
This is a variation on ErrorMessage that is parameterized over what
text type is used in the Text constructor. Instantiating it with
Text gives you ErrorMessage, and instantiating it with Symbol
gives you PErrorMessage.
Constructors
| Text s | Show the text as is. |
| forall t. ShowType t | Pretty print the type.
|
| (ErrorMessage' s) :<>: (ErrorMessage' s) infixl 6 | Put two pieces of error message next to each other. |
| (ErrorMessage' s) :$$: (ErrorMessage' s) infixl 5 | Stack two pieces of error message on top of each other. |
Instances
type ErrorMessage = ErrorMessage' Text Source #
A value-level ErrorMessage` which uses Text as its text type.
type PErrorMessage = ErrorMessage' Symbol Source #
A type-level ErrorMessage` which uses Symbol as its text kind.
type family Sing :: k -> Type Source #
The singleton kind-indexed type family.
Instances
data SErrorMessage :: PErrorMessage -> Type where Source #
Constructors
| SText :: Sing t -> SErrorMessage ('Text t) | |
| SShowType :: Sing ty -> SErrorMessage ('ShowType ty) | |
| (:%<>:) :: Sing e1 -> Sing e2 -> SErrorMessage (e1 :<>: e2) infixl 6 | |
| (:%$$:) :: Sing e1 -> Sing e2 -> SErrorMessage (e1 :$$: e2) infixl 5 |
type family ConvertPErrorMessage (a :: PErrorMessage) :: ErrorMessage where ... Source #
Convert a PErrorMessage to a ErrorMessage from GHC.TypeLits.
Equations
| ConvertPErrorMessage ('Text t) = 'Text t | |
| ConvertPErrorMessage ('ShowType ty) = 'ShowType ty | |
| ConvertPErrorMessage (e1 :<>: e2) = ConvertPErrorMessage e1 :<>: ConvertPErrorMessage e2 | |
| ConvertPErrorMessage (e1 :$$: e2) = ConvertPErrorMessage e1 :$$: ConvertPErrorMessage e2 |
showErrorMessage :: ErrorMessage -> String Source #
Convert an ErrorMessage into a human-readable String.
Defunctionalization symbols
data TextSym0 :: forall (s6989586621681327330 :: Type). (~>) s6989586621681327330 (ErrorMessage' (s6989586621681327330 :: Type)) Source #
Instances
| SingI (TextSym0 :: TyFun Symbol (ErrorMessage' Symbol) -> Type) Source # | |
| SuppressUnusedWarnings (TextSym0 :: TyFun s6989586621681327330 (ErrorMessage' s6989586621681327330) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods suppressUnusedWarnings :: () Source # | |
| type Apply (TextSym0 :: TyFun s (ErrorMessage' s) -> Type) (t6989586621681328074 :: s) Source # | |
Defined in Data.Singletons.TypeError type Apply (TextSym0 :: TyFun s (ErrorMessage' s) -> Type) (t6989586621681328074 :: s) = 'Text t6989586621681328074 | |
data ShowTypeSym0 :: forall t6989586621681327331 (s6989586621681327330 :: Type). (~>) t6989586621681327331 (ErrorMessage' (s6989586621681327330 :: Type)) Source #
Instances
| SingI (ShowTypeSym0 :: TyFun t (ErrorMessage' Symbol) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods sing :: Sing ShowTypeSym0 Source # | |
| SuppressUnusedWarnings (ShowTypeSym0 :: TyFun t6989586621681327331 (ErrorMessage' s6989586621681327330) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods suppressUnusedWarnings :: () Source # | |
| type Apply (ShowTypeSym0 :: TyFun t (ErrorMessage' s6989586621681327330) -> Type) (t6989586621681328076 :: t) Source # | |
Defined in Data.Singletons.TypeError type Apply (ShowTypeSym0 :: TyFun t (ErrorMessage' s6989586621681327330) -> Type) (t6989586621681328076 :: t) = 'ShowType t6989586621681328076 :: ErrorMessage' s6989586621681327330 | |
type ShowTypeSym1 (t6989586621681328076 :: t6989586621681327331) = 'ShowType t6989586621681328076 Source #
data (:<>:@#@$) :: forall (s6989586621681327330 :: Type). (~>) (ErrorMessage' s6989586621681327330) ((~>) (ErrorMessage' s6989586621681327330) (ErrorMessage' (s6989586621681327330 :: Type))) infixl 6 Source #
Instances
| SingI ((:<>:@#@$) :: TyFun (ErrorMessage' Symbol) (ErrorMessage' Symbol ~> ErrorMessage' Symbol) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods sing :: Sing (:<>:@#@$) Source # | |
| SuppressUnusedWarnings ((:<>:@#@$) :: TyFun (ErrorMessage' s6989586621681327330) (ErrorMessage' s6989586621681327330 ~> ErrorMessage' s6989586621681327330) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods suppressUnusedWarnings :: () Source # | |
| type Apply ((:<>:@#@$) :: TyFun (ErrorMessage' s6989586621681327330) (ErrorMessage' s6989586621681327330 ~> ErrorMessage' s6989586621681327330) -> Type) (t6989586621681328078 :: ErrorMessage' s6989586621681327330) Source # | |
Defined in Data.Singletons.TypeError type Apply ((:<>:@#@$) :: TyFun (ErrorMessage' s6989586621681327330) (ErrorMessage' s6989586621681327330 ~> ErrorMessage' s6989586621681327330) -> Type) (t6989586621681328078 :: ErrorMessage' s6989586621681327330) = (:<>:@#@$$) t6989586621681328078 | |
data (:<>:@#@$$) (t6989586621681328078 :: ErrorMessage' (s6989586621681327330 :: Type)) :: (~>) (ErrorMessage' s6989586621681327330) (ErrorMessage' (s6989586621681327330 :: Type)) infixl 6 Source #
Instances
| SingI x => SingI ((:<>:@#@$$) x :: TyFun (ErrorMessage' Symbol) (ErrorMessage' Symbol) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods sing :: Sing ((:<>:@#@$$) x) Source # | |
| SuppressUnusedWarnings ((:<>:@#@$$) t6989586621681328078 :: TyFun (ErrorMessage' s6989586621681327330) (ErrorMessage' s6989586621681327330) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods suppressUnusedWarnings :: () Source # | |
| type Apply ((:<>:@#@$$) t6989586621681328078 :: TyFun (ErrorMessage' s) (ErrorMessage' s) -> Type) (t6989586621681328079 :: ErrorMessage' s) Source # | |
Defined in Data.Singletons.TypeError type Apply ((:<>:@#@$$) t6989586621681328078 :: TyFun (ErrorMessage' s) (ErrorMessage' s) -> Type) (t6989586621681328079 :: ErrorMessage' s) = t6989586621681328078 :<>: t6989586621681328079 | |
type (:<>:@#@$$$) (t6989586621681328078 :: ErrorMessage' s6989586621681327330) (t6989586621681328079 :: ErrorMessage' s6989586621681327330) = '(:<>:) t6989586621681328078 t6989586621681328079 Source #
data (:$$:@#@$) :: forall (s6989586621681327330 :: Type). (~>) (ErrorMessage' s6989586621681327330) ((~>) (ErrorMessage' s6989586621681327330) (ErrorMessage' (s6989586621681327330 :: Type))) infixl 5 Source #
Instances
| SingI ((:$$:@#@$) :: TyFun (ErrorMessage' Symbol) (ErrorMessage' Symbol ~> ErrorMessage' Symbol) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods sing :: Sing (:$$:@#@$) Source # | |
| SuppressUnusedWarnings ((:$$:@#@$) :: TyFun (ErrorMessage' s6989586621681327330) (ErrorMessage' s6989586621681327330 ~> ErrorMessage' s6989586621681327330) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods suppressUnusedWarnings :: () Source # | |
| type Apply ((:$$:@#@$) :: TyFun (ErrorMessage' s6989586621681327330) (ErrorMessage' s6989586621681327330 ~> ErrorMessage' s6989586621681327330) -> Type) (t6989586621681328082 :: ErrorMessage' s6989586621681327330) Source # | |
Defined in Data.Singletons.TypeError type Apply ((:$$:@#@$) :: TyFun (ErrorMessage' s6989586621681327330) (ErrorMessage' s6989586621681327330 ~> ErrorMessage' s6989586621681327330) -> Type) (t6989586621681328082 :: ErrorMessage' s6989586621681327330) = (:$$:@#@$$) t6989586621681328082 | |
data (:$$:@#@$$) (t6989586621681328082 :: ErrorMessage' (s6989586621681327330 :: Type)) :: (~>) (ErrorMessage' s6989586621681327330) (ErrorMessage' (s6989586621681327330 :: Type)) infixl 5 Source #
Instances
| SingI x => SingI ((:$$:@#@$$) x :: TyFun (ErrorMessage' Symbol) (ErrorMessage' Symbol) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods sing :: Sing ((:$$:@#@$$) x) Source # | |
| SuppressUnusedWarnings ((:$$:@#@$$) t6989586621681328082 :: TyFun (ErrorMessage' s6989586621681327330) (ErrorMessage' s6989586621681327330) -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods suppressUnusedWarnings :: () Source # | |
| type Apply ((:$$:@#@$$) t6989586621681328082 :: TyFun (ErrorMessage' s) (ErrorMessage' s) -> Type) (t6989586621681328083 :: ErrorMessage' s) Source # | |
Defined in Data.Singletons.TypeError type Apply ((:$$:@#@$$) t6989586621681328082 :: TyFun (ErrorMessage' s) (ErrorMessage' s) -> Type) (t6989586621681328083 :: ErrorMessage' s) = t6989586621681328082 :$$: t6989586621681328083 | |
type (:$$:@#@$$$) (t6989586621681328082 :: ErrorMessage' s6989586621681327330) (t6989586621681328083 :: ErrorMessage' s6989586621681327330) = '(:$$:) t6989586621681328082 t6989586621681328083 Source #
data TypeErrorSym0 :: forall b6989586621681327314. (~>) PErrorMessage b6989586621681327314 Source #
Instances
| SingI (TypeErrorSym0 :: TyFun PErrorMessage b6989586621681327314 -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods sing :: Sing TypeErrorSym0 Source # | |
| SuppressUnusedWarnings (TypeErrorSym0 :: TyFun PErrorMessage b6989586621681327314 -> Type) Source # | |
Defined in Data.Singletons.TypeError Methods suppressUnusedWarnings :: () Source # | |
| type Apply (TypeErrorSym0 :: TyFun PErrorMessage k2 -> Type) (a6989586621681327315 :: PErrorMessage) Source # | |
Defined in Data.Singletons.TypeError type Apply (TypeErrorSym0 :: TyFun PErrorMessage k2 -> Type) (a6989586621681327315 :: PErrorMessage) = TypeError a6989586621681327315 :: k2 | |
type TypeErrorSym1 (a6989586621681327315 :: PErrorMessage) = TypeError a6989586621681327315 Source #