singletons-2.4: tests/compile-and-dump/Singletons/T200.ghc84.template
Singletons/T200.hs:(0,0)-(0,0): Splicing declarations
singletons
[d| ($$:) :: ErrorMessage -> ErrorMessage -> ErrorMessage
x $$: y = x :$$: y
(<>:) :: ErrorMessage -> ErrorMessage -> ErrorMessage
x <>: y = x :<>: y
data ErrorMessage
= ErrorMessage :$$: ErrorMessage |
ErrorMessage :<>: ErrorMessage |
EM [Bool] |]
======>
data ErrorMessage
= ErrorMessage :$$: ErrorMessage |
ErrorMessage :<>: ErrorMessage |
EM [Bool]
($$:) :: ErrorMessage -> ErrorMessage -> ErrorMessage
($$:) x y = (x :$$: y)
(<>:) :: ErrorMessage -> ErrorMessage -> ErrorMessage
(<>:) x y = (x :<>: y)
type (:$$:@#@$$$) (t :: ErrorMessage) (t :: ErrorMessage) =
(:$$:) t t
instance SuppressUnusedWarnings (:$$:@#@$$) where
suppressUnusedWarnings
= snd ((GHC.Tuple.(,) (::$$:@#@$$###)) GHC.Tuple.())
data (:$$:@#@$$) (l :: ErrorMessage) (l :: TyFun ErrorMessage ErrorMessage)
= forall arg. SameKind (Apply ((:$$:@#@$$) l) arg) ((:$$:@#@$$$) l arg) =>
(::$$:@#@$$###)
type instance Apply ((:$$:@#@$$) l) l = (:$$:) l l
instance SuppressUnusedWarnings (:$$:@#@$) where
suppressUnusedWarnings
= snd ((GHC.Tuple.(,) (::$$:@#@$###)) GHC.Tuple.())
data (:$$:@#@$) (l :: TyFun ErrorMessage (TyFun ErrorMessage ErrorMessage
-> GHC.Types.Type))
= forall arg. SameKind (Apply (:$$:@#@$) arg) ((:$$:@#@$$) arg) =>
(::$$:@#@$###)
type instance Apply (:$$:@#@$) l = (:$$:@#@$$) l
type (:<>:@#@$$$) (t :: ErrorMessage) (t :: ErrorMessage) =
(:<>:) t t
instance SuppressUnusedWarnings (:<>:@#@$$) where
suppressUnusedWarnings
= snd ((GHC.Tuple.(,) (::<>:@#@$$###)) GHC.Tuple.())
data (:<>:@#@$$) (l :: ErrorMessage) (l :: TyFun ErrorMessage ErrorMessage)
= forall arg. SameKind (Apply ((:<>:@#@$$) l) arg) ((:<>:@#@$$$) l arg) =>
(::<>:@#@$$###)
type instance Apply ((:<>:@#@$$) l) l = (:<>:) l l
instance SuppressUnusedWarnings (:<>:@#@$) where
suppressUnusedWarnings
= snd ((GHC.Tuple.(,) (::<>:@#@$###)) GHC.Tuple.())
data (:<>:@#@$) (l :: TyFun ErrorMessage (TyFun ErrorMessage ErrorMessage
-> GHC.Types.Type))
= forall arg. SameKind (Apply (:<>:@#@$) arg) ((:<>:@#@$$) arg) =>
(::<>:@#@$###)
type instance Apply (:<>:@#@$) l = (:<>:@#@$$) l
type EMSym1 (t :: [Bool]) = EM t
instance SuppressUnusedWarnings EMSym0 where
suppressUnusedWarnings
= snd ((GHC.Tuple.(,) EMSym0KindInference) GHC.Tuple.())
data EMSym0 (l :: TyFun [Bool] ErrorMessage)
= forall arg. SameKind (Apply EMSym0 arg) (EMSym1 arg) =>
EMSym0KindInference
type instance Apply EMSym0 l = EM l
type (<>:@#@$$$) (t :: ErrorMessage) (t :: ErrorMessage) =
(<>:) t t
instance SuppressUnusedWarnings (<>:@#@$$) where
suppressUnusedWarnings
= snd ((GHC.Tuple.(,) (:<>:@#@$$###)) GHC.Tuple.())
data (<>:@#@$$) (l :: ErrorMessage) (l :: TyFun ErrorMessage ErrorMessage)
= forall arg. SameKind (Apply ((<>:@#@$$) l) arg) ((<>:@#@$$$) l arg) =>
(:<>:@#@$$###)
type instance Apply ((<>:@#@$$) l) l = (<>:) l l
instance SuppressUnusedWarnings (<>:@#@$) where
suppressUnusedWarnings
= snd ((GHC.Tuple.(,) (:<>:@#@$###)) GHC.Tuple.())
data (<>:@#@$) (l :: TyFun ErrorMessage (TyFun ErrorMessage ErrorMessage
-> GHC.Types.Type))
= forall arg. SameKind (Apply (<>:@#@$) arg) ((<>:@#@$$) arg) =>
(:<>:@#@$###)
type instance Apply (<>:@#@$) l = (<>:@#@$$) l
type ($$:@#@$$$) (t :: ErrorMessage) (t :: ErrorMessage) =
($$:) t t
instance SuppressUnusedWarnings ($$:@#@$$) where
suppressUnusedWarnings
= snd ((GHC.Tuple.(,) (:$$:@#@$$###)) GHC.Tuple.())
data ($$:@#@$$) (l :: ErrorMessage) (l :: TyFun ErrorMessage ErrorMessage)
= forall arg. SameKind (Apply (($$:@#@$$) l) arg) (($$:@#@$$$) l arg) =>
(:$$:@#@$$###)
type instance Apply (($$:@#@$$) l) l = ($$:) l l
instance SuppressUnusedWarnings ($$:@#@$) where
suppressUnusedWarnings
= snd ((GHC.Tuple.(,) (:$$:@#@$###)) GHC.Tuple.())
data ($$:@#@$) (l :: TyFun ErrorMessage (TyFun ErrorMessage ErrorMessage
-> GHC.Types.Type))
= forall arg. SameKind (Apply ($$:@#@$) arg) (($$:@#@$$) arg) =>
(:$$:@#@$###)
type instance Apply ($$:@#@$) l = ($$:@#@$$) l
type family (<>:) (a :: ErrorMessage) (a :: ErrorMessage) :: ErrorMessage where
(<>:) x y = Apply (Apply (:<>:@#@$) x) y
type family ($$:) (a :: ErrorMessage) (a :: ErrorMessage) :: ErrorMessage where
($$:) x y = Apply (Apply (:$$:@#@$) x) y
(%<>:) ::
forall (t :: ErrorMessage) (t :: ErrorMessage).
Sing t
-> Sing t -> Sing (Apply (Apply (<>:@#@$) t) t :: ErrorMessage)
(%$$:) ::
forall (t :: ErrorMessage) (t :: ErrorMessage).
Sing t
-> Sing t -> Sing (Apply (Apply ($$:@#@$) t) t :: ErrorMessage)
(%<>:) (sX :: Sing x) (sY :: Sing y)
= (applySing ((applySing ((singFun2 @(:<>:@#@$)) (:%<>:))) sX)) sY
(%$$:) (sX :: Sing x) (sY :: Sing y)
= (applySing ((applySing ((singFun2 @(:$$:@#@$)) (:%$$:))) sX)) sY
data instance Sing (z :: ErrorMessage)
where
(:%$$:) :: forall (n :: ErrorMessage) (n :: ErrorMessage).
(Sing (n :: ErrorMessage))
-> (Sing (n :: ErrorMessage)) -> Sing ((:$$:) n n)
(:%<>:) :: forall (n :: ErrorMessage) (n :: ErrorMessage).
(Sing (n :: ErrorMessage))
-> (Sing (n :: ErrorMessage)) -> Sing ((:<>:) n n)
SEM :: forall (n :: [Bool]). (Sing (n :: [Bool])) -> Sing (EM n)
type SErrorMessage = (Sing :: ErrorMessage -> GHC.Types.Type)
instance SingKind ErrorMessage where
type Demote ErrorMessage = ErrorMessage
fromSing ((:%$$:) b b) = ((:$$:) (fromSing b)) (fromSing b)
fromSing ((:%<>:) b b) = ((:<>:) (fromSing b)) (fromSing b)
fromSing (SEM b) = EM (fromSing b)
toSing
((:$$:) (b :: Demote ErrorMessage) (b :: Demote ErrorMessage))
= case
(GHC.Tuple.(,) (toSing b :: SomeSing ErrorMessage))
(toSing b :: SomeSing ErrorMessage)
of {
GHC.Tuple.(,) (SomeSing c) (SomeSing c)
-> SomeSing (((:%$$:) c) c) }
toSing
((:<>:) (b :: Demote ErrorMessage) (b :: Demote ErrorMessage))
= case
(GHC.Tuple.(,) (toSing b :: SomeSing ErrorMessage))
(toSing b :: SomeSing ErrorMessage)
of {
GHC.Tuple.(,) (SomeSing c) (SomeSing c)
-> SomeSing (((:%<>:) c) c) }
toSing (EM (b :: Demote [Bool]))
= case toSing b :: SomeSing [Bool] of {
SomeSing c -> SomeSing (SEM c) }
instance (SingI n, SingI n) =>
SingI ((:$$:) (n :: ErrorMessage) (n :: ErrorMessage)) where
sing = ((:%$$:) sing) sing
instance (SingI n, SingI n) =>
SingI ((:<>:) (n :: ErrorMessage) (n :: ErrorMessage)) where
sing = ((:%<>:) sing) sing
instance SingI n => SingI (EM (n :: [Bool])) where
sing = SEM sing