singletons-2.3: tests/compile-and-dump/Singletons/T167.ghc82.template
Singletons/T167.hs:(0,0)-(0,0): Splicing declarations
singletonsOnly
[d| class Foo a where
foosPrec :: Nat -> a -> DiffList
fooList :: a -> DiffList
fooList = undefined
instance Foo a => Foo [a] where
foosPrec _ = fooList |]
======>
type FoosPrecSym3 (t :: Nat) (t :: a0123456789876543210) (t :: [Bool]) =
FoosPrec t t t
instance SuppressUnusedWarnings FoosPrecSym2 where
suppressUnusedWarnings _
= snd ((GHC.Tuple.(,) FoosPrecSym2KindInference) GHC.Tuple.())
data FoosPrecSym2 (l :: Nat) (l :: a0123456789876543210) (l :: TyFun [Bool] [Bool])
= forall arg. SameKind (Apply (FoosPrecSym2 l l) arg) (FoosPrecSym3 l l arg) =>
FoosPrecSym2KindInference
type instance Apply (FoosPrecSym2 l l) l = FoosPrec l l l
instance SuppressUnusedWarnings FoosPrecSym1 where
suppressUnusedWarnings _
= snd ((GHC.Tuple.(,) FoosPrecSym1KindInference) GHC.Tuple.())
data FoosPrecSym1 (l :: Nat) (l :: TyFun a0123456789876543210 (TyFun [Bool] [Bool]
-> GHC.Types.Type))
= forall arg. SameKind (Apply (FoosPrecSym1 l) arg) (FoosPrecSym2 l arg) =>
FoosPrecSym1KindInference
type instance Apply (FoosPrecSym1 l) l = FoosPrecSym2 l l
instance SuppressUnusedWarnings FoosPrecSym0 where
suppressUnusedWarnings _
= snd ((GHC.Tuple.(,) FoosPrecSym0KindInference) GHC.Tuple.())
data FoosPrecSym0 (l :: TyFun Nat (TyFun a0123456789876543210 (TyFun [Bool] [Bool]
-> GHC.Types.Type)
-> GHC.Types.Type))
= forall arg. SameKind (Apply FoosPrecSym0 arg) (FoosPrecSym1 arg) =>
FoosPrecSym0KindInference
type instance Apply FoosPrecSym0 l = FoosPrecSym1 l
type FooListSym2 (t :: a0123456789876543210) (t :: [Bool]) =
FooList t t
instance SuppressUnusedWarnings FooListSym1 where
suppressUnusedWarnings _
= snd ((GHC.Tuple.(,) FooListSym1KindInference) GHC.Tuple.())
data FooListSym1 (l :: a0123456789876543210) (l :: TyFun [Bool] [Bool])
= forall arg. SameKind (Apply (FooListSym1 l) arg) (FooListSym2 l arg) =>
FooListSym1KindInference
type instance Apply (FooListSym1 l) l = FooList l l
instance SuppressUnusedWarnings FooListSym0 where
suppressUnusedWarnings _
= snd ((GHC.Tuple.(,) FooListSym0KindInference) GHC.Tuple.())
data FooListSym0 (l :: TyFun a0123456789876543210 (TyFun [Bool] [Bool]
-> GHC.Types.Type))
= forall arg. SameKind (Apply FooListSym0 arg) (FooListSym1 arg) =>
FooListSym0KindInference
type instance Apply FooListSym0 l = FooListSym1 l
type family FooList_0123456789876543210 (a :: a) (a :: [Bool]) :: [Bool] where
FooList_0123456789876543210 a_0123456789876543210 a_0123456789876543210 = Apply (Apply Any a_0123456789876543210) a_0123456789876543210
type FooList_0123456789876543210Sym2 (t :: a0123456789876543210) (t :: [Bool]) =
FooList_0123456789876543210 t t
instance SuppressUnusedWarnings FooList_0123456789876543210Sym1 where
suppressUnusedWarnings _
= snd
((GHC.Tuple.(,) FooList_0123456789876543210Sym1KindInference)
GHC.Tuple.())
data FooList_0123456789876543210Sym1 (l :: a0123456789876543210) (l :: TyFun [Bool] [Bool])
= forall arg. SameKind (Apply (FooList_0123456789876543210Sym1 l) arg) (FooList_0123456789876543210Sym2 l arg) =>
FooList_0123456789876543210Sym1KindInference
type instance Apply (FooList_0123456789876543210Sym1 l) l = FooList_0123456789876543210 l l
instance SuppressUnusedWarnings FooList_0123456789876543210Sym0 where
suppressUnusedWarnings _
= snd
((GHC.Tuple.(,) FooList_0123456789876543210Sym0KindInference)
GHC.Tuple.())
data FooList_0123456789876543210Sym0 (l :: TyFun a0123456789876543210 (TyFun [Bool] [Bool]
-> GHC.Types.Type))
= forall arg. SameKind (Apply FooList_0123456789876543210Sym0 arg) (FooList_0123456789876543210Sym1 arg) =>
FooList_0123456789876543210Sym0KindInference
type instance Apply FooList_0123456789876543210Sym0 l = FooList_0123456789876543210Sym1 l
class PFoo (a :: GHC.Types.Type) where
type FoosPrec (arg :: Nat) (arg :: a) (arg :: [Bool]) :: [Bool]
type FooList (arg :: a) (arg :: [Bool]) :: [Bool]
type FooList a a = Apply (Apply FooList_0123456789876543210Sym0 a) a
type family FoosPrec_0123456789876543210 (a :: Nat) (a :: [a]) (a :: [Bool]) :: [Bool] where
FoosPrec_0123456789876543210 _z_0123456789876543210 a_0123456789876543210 a_0123456789876543210 = Apply (Apply FooListSym0 a_0123456789876543210) a_0123456789876543210
type FoosPrec_0123456789876543210Sym3 (t :: Nat) (t :: [a0123456789876543210]) (t :: [Bool]) =
FoosPrec_0123456789876543210 t t t
instance SuppressUnusedWarnings FoosPrec_0123456789876543210Sym2 where
suppressUnusedWarnings _
= snd
((GHC.Tuple.(,) FoosPrec_0123456789876543210Sym2KindInference)
GHC.Tuple.())
data FoosPrec_0123456789876543210Sym2 (l :: Nat) (l :: [a0123456789876543210]) (l :: TyFun [Bool] [Bool])
= forall arg. SameKind (Apply (FoosPrec_0123456789876543210Sym2 l l) arg) (FoosPrec_0123456789876543210Sym3 l l arg) =>
FoosPrec_0123456789876543210Sym2KindInference
type instance Apply (FoosPrec_0123456789876543210Sym2 l l) l = FoosPrec_0123456789876543210 l l l
instance SuppressUnusedWarnings FoosPrec_0123456789876543210Sym1 where
suppressUnusedWarnings _
= snd
((GHC.Tuple.(,) FoosPrec_0123456789876543210Sym1KindInference)
GHC.Tuple.())
data FoosPrec_0123456789876543210Sym1 (l :: Nat) (l :: TyFun [a0123456789876543210] (TyFun [Bool] [Bool]
-> GHC.Types.Type))
= forall arg. SameKind (Apply (FoosPrec_0123456789876543210Sym1 l) arg) (FoosPrec_0123456789876543210Sym2 l arg) =>
FoosPrec_0123456789876543210Sym1KindInference
type instance Apply (FoosPrec_0123456789876543210Sym1 l) l = FoosPrec_0123456789876543210Sym2 l l
instance SuppressUnusedWarnings FoosPrec_0123456789876543210Sym0 where
suppressUnusedWarnings _
= snd
((GHC.Tuple.(,) FoosPrec_0123456789876543210Sym0KindInference)
GHC.Tuple.())
data FoosPrec_0123456789876543210Sym0 (l :: TyFun Nat (TyFun [a0123456789876543210] (TyFun [Bool] [Bool]
-> GHC.Types.Type)
-> GHC.Types.Type))
= forall arg. SameKind (Apply FoosPrec_0123456789876543210Sym0 arg) (FoosPrec_0123456789876543210Sym1 arg) =>
FoosPrec_0123456789876543210Sym0KindInference
type instance Apply FoosPrec_0123456789876543210Sym0 l = FoosPrec_0123456789876543210Sym1 l
instance PFoo [a] where
type FoosPrec (a :: Nat) (a :: [a]) (a :: [Bool]) = Apply (Apply (Apply FoosPrec_0123456789876543210Sym0 a) a) a
class SFoo a where
sFoosPrec ::
forall (t :: Nat) (t :: a) (t :: [Bool]).
Sing t
-> Sing t
-> Sing t
-> Sing (Apply (Apply (Apply FoosPrecSym0 t) t) t :: [Bool])
sFooList ::
forall (t :: a) (t :: [Bool]).
Sing t -> Sing t -> Sing (Apply (Apply FooListSym0 t) t :: [Bool])
default sFooList ::
forall (t :: a) (t :: [Bool]).
(Apply (Apply FooListSym0 t) t :: [Bool]) ~ Apply (Apply FooList_0123456789876543210Sym0 t) t =>
Sing t -> Sing t -> Sing (Apply (Apply FooListSym0 t) t :: [Bool])
sFooList
(sA_0123456789876543210 :: Sing a_0123456789876543210)
(sA_0123456789876543210 :: Sing a_0123456789876543210)
= undefined
instance SFoo a => SFoo [a] where
sFoosPrec ::
forall (t :: Nat) (t :: [a]) (t :: [Bool]).
Sing t
-> Sing t
-> Sing t
-> Sing (Apply (Apply (Apply FoosPrecSym0 t) t) t :: [Bool])
sFoosPrec
_
(sA_0123456789876543210 :: Sing a_0123456789876543210)
(sA_0123456789876543210 :: Sing a_0123456789876543210)
= (applySing
((applySing ((singFun2 @FooListSym0) sFooList))
sA_0123456789876543210))
sA_0123456789876543210