{-# language StandaloneKindSignatures, CPP #-}
#if __GLASGOW_HASKELL__ >= 910
{-# language TypeAbstractions #-}
#endif
module Incipit.TypeError where
import GHC.TypeLits (ErrorMessage (..), Symbol, TypeError)
type (<>) :: k1 -> k2 -> ErrorMessage
type family (<>) l r :: ErrorMessage where
l <> r = ToErrorMessage l ':<>: ToErrorMessage r
infixl 5 <>
type (%) :: k1 -> k2 -> ErrorMessage
type family (%) t b :: ErrorMessage where
t % b = ToErrorMessage t ':$$: ToErrorMessage b
infixr 4 %
type ToErrorMessage :: k -> ErrorMessage
type family ToErrorMessage t where
ToErrorMessage (t :: Symbol) = 'Text t
ToErrorMessage (t :: ErrorMessage) = t
ToErrorMessage t = 'ShowType t
type Undefined :: k
#if __GLASGOW_HASKELL__ >= 910
type family Undefined @k where
#else
type family Undefined where
#endif
Undefined = TypeError ('Text "undefined")