packages feed

singletons-base-3.4: tests/compile-and-dump/Singletons/ShowDeriving.golden

Singletons/ShowDeriving.hs:(0,0)-(0,0): Splicing declarations
    singletons
      [d| infixl 5 `MkFoo2b`, :*:, :&:
          
          data Foo1
            = MkFoo1
            deriving Show
          data Foo2 a
            = MkFoo2a a a | a `MkFoo2b` a | (:*:) a a | a :&: a
            deriving Show
          data Foo3
            = MkFoo3 {getFoo3a :: Bool, (***) :: Bool}
            deriving Show |]
  ======>
    data Foo1
      = MkFoo1
      deriving Show
    infixl 5 `MkFoo2b`
    infixl 5 :*:
    infixl 5 :&:
    data Foo2 a
      = MkFoo2a a a | a `MkFoo2b` a | (:*:) a a | a :&: a
      deriving Show
    data Foo3
      = MkFoo3 {getFoo3a :: Bool, (***) :: Bool}
      deriving Show
    type MkFoo1Sym0 :: Foo1
    type family MkFoo1Sym0 :: Foo1 where
      MkFoo1Sym0 = MkFoo1
    type MkFoo2aSym0 :: forall a. (~>) a ((~>) a (Foo2 a))
    data MkFoo2aSym0 :: (~>) a ((~>) a (Foo2 a))
      where
        MkFoo2aSym0KindInference :: SameKind (Apply MkFoo2aSym0 arg) (MkFoo2aSym1 arg) =>
                                    MkFoo2aSym0 a0123456789876543210
    type instance Apply MkFoo2aSym0 a0123456789876543210 = MkFoo2aSym1 a0123456789876543210
    instance SuppressUnusedWarnings MkFoo2aSym0 where
      suppressUnusedWarnings = snd ((,) MkFoo2aSym0KindInference ())
    type MkFoo2aSym1 :: forall a. a -> (~>) a (Foo2 a)
    data MkFoo2aSym1 (a0123456789876543210 :: a) :: (~>) a (Foo2 a)
      where
        MkFoo2aSym1KindInference :: SameKind (Apply (MkFoo2aSym1 a0123456789876543210) arg) (MkFoo2aSym2 a0123456789876543210 arg) =>
                                    MkFoo2aSym1 a0123456789876543210 a0123456789876543210
    type instance Apply (MkFoo2aSym1 a0123456789876543210) a0123456789876543210 = MkFoo2a a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (MkFoo2aSym1 a0123456789876543210) where
      suppressUnusedWarnings = snd ((,) MkFoo2aSym1KindInference ())
    type MkFoo2aSym2 :: forall a. a -> a -> Foo2 a
    type family MkFoo2aSym2 @a (a0123456789876543210 :: a) (a0123456789876543210 :: a) :: Foo2 a where
      MkFoo2aSym2 a0123456789876543210 a0123456789876543210 = MkFoo2a a0123456789876543210 a0123456789876543210
    type MkFoo2bSym0 :: forall a. (~>) a ((~>) a (Foo2 a))
    data MkFoo2bSym0 :: (~>) a ((~>) a (Foo2 a))
      where
        MkFoo2bSym0KindInference :: SameKind (Apply MkFoo2bSym0 arg) (MkFoo2bSym1 arg) =>
                                    MkFoo2bSym0 a0123456789876543210
    type instance Apply MkFoo2bSym0 a0123456789876543210 = MkFoo2bSym1 a0123456789876543210
    instance SuppressUnusedWarnings MkFoo2bSym0 where
      suppressUnusedWarnings = snd ((,) MkFoo2bSym0KindInference ())
    infixl 5 `MkFoo2bSym0`
    type MkFoo2bSym1 :: forall a. a -> (~>) a (Foo2 a)
    data MkFoo2bSym1 (a0123456789876543210 :: a) :: (~>) a (Foo2 a)
      where
        MkFoo2bSym1KindInference :: SameKind (Apply (MkFoo2bSym1 a0123456789876543210) arg) (MkFoo2bSym2 a0123456789876543210 arg) =>
                                    MkFoo2bSym1 a0123456789876543210 a0123456789876543210
    type instance Apply (MkFoo2bSym1 a0123456789876543210) a0123456789876543210 = MkFoo2b a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (MkFoo2bSym1 a0123456789876543210) where
      suppressUnusedWarnings = snd ((,) MkFoo2bSym1KindInference ())
    infixl 5 `MkFoo2bSym1`
    type MkFoo2bSym2 :: forall a. a -> a -> Foo2 a
    type family MkFoo2bSym2 @a (a0123456789876543210 :: a) (a0123456789876543210 :: a) :: Foo2 a where
      MkFoo2bSym2 a0123456789876543210 a0123456789876543210 = MkFoo2b a0123456789876543210 a0123456789876543210
    infixl 5 `MkFoo2bSym2`
    type (:*:@#@$) :: forall a. (~>) a ((~>) a (Foo2 a))
    data (:*:@#@$) :: (~>) a ((~>) a (Foo2 a))
      where
        (::*:@#@$###) :: SameKind (Apply (:*:@#@$) arg) ((:*:@#@$$) arg) =>
                         (:*:@#@$) a0123456789876543210
    type instance Apply (:*:@#@$) a0123456789876543210 = (:*:@#@$$) a0123456789876543210
    instance SuppressUnusedWarnings (:*:@#@$) where
      suppressUnusedWarnings = snd ((,) (::*:@#@$###) ())
    infixl 5 :*:@#@$
    type (:*:@#@$$) :: forall a. a -> (~>) a (Foo2 a)
    data (:*:@#@$$) (a0123456789876543210 :: a) :: (~>) a (Foo2 a)
      where
        (::*:@#@$$###) :: SameKind (Apply ((:*:@#@$$) a0123456789876543210) arg) ((:*:@#@$$$) a0123456789876543210 arg) =>
                          (:*:@#@$$) a0123456789876543210 a0123456789876543210
    type instance Apply ((:*:@#@$$) a0123456789876543210) a0123456789876543210 = (:*:) a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings ((:*:@#@$$) a0123456789876543210) where
      suppressUnusedWarnings = snd ((,) (::*:@#@$$###) ())
    infixl 5 :*:@#@$$
    type (:*:@#@$$$) :: forall a. a -> a -> Foo2 a
    type family (:*:@#@$$$) @a (a0123456789876543210 :: a) (a0123456789876543210 :: a) :: Foo2 a where
      (:*:@#@$$$) a0123456789876543210 a0123456789876543210 = (:*:) a0123456789876543210 a0123456789876543210
    infixl 5 :*:@#@$$$
    type (:&:@#@$) :: forall a. (~>) a ((~>) a (Foo2 a))
    data (:&:@#@$) :: (~>) a ((~>) a (Foo2 a))
      where
        (::&:@#@$###) :: SameKind (Apply (:&:@#@$) arg) ((:&:@#@$$) arg) =>
                         (:&:@#@$) a0123456789876543210
    type instance Apply (:&:@#@$) a0123456789876543210 = (:&:@#@$$) a0123456789876543210
    instance SuppressUnusedWarnings (:&:@#@$) where
      suppressUnusedWarnings = snd ((,) (::&:@#@$###) ())
    infixl 5 :&:@#@$
    type (:&:@#@$$) :: forall a. a -> (~>) a (Foo2 a)
    data (:&:@#@$$) (a0123456789876543210 :: a) :: (~>) a (Foo2 a)
      where
        (::&:@#@$$###) :: SameKind (Apply ((:&:@#@$$) a0123456789876543210) arg) ((:&:@#@$$$) a0123456789876543210 arg) =>
                          (:&:@#@$$) a0123456789876543210 a0123456789876543210
    type instance Apply ((:&:@#@$$) a0123456789876543210) a0123456789876543210 = (:&:) a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings ((:&:@#@$$) a0123456789876543210) where
      suppressUnusedWarnings = snd ((,) (::&:@#@$$###) ())
    infixl 5 :&:@#@$$
    type (:&:@#@$$$) :: forall a. a -> a -> Foo2 a
    type family (:&:@#@$$$) @a (a0123456789876543210 :: a) (a0123456789876543210 :: a) :: Foo2 a where
      (:&:@#@$$$) a0123456789876543210 a0123456789876543210 = (:&:) a0123456789876543210 a0123456789876543210
    infixl 5 :&:@#@$$$
    type MkFoo3Sym0 :: (~>) Bool ((~>) Bool Foo3)
    data MkFoo3Sym0 :: (~>) Bool ((~>) Bool Foo3)
      where
        MkFoo3Sym0KindInference :: SameKind (Apply MkFoo3Sym0 arg) (MkFoo3Sym1 arg) =>
                                   MkFoo3Sym0 a0123456789876543210
    type instance Apply MkFoo3Sym0 a0123456789876543210 = MkFoo3Sym1 a0123456789876543210
    instance SuppressUnusedWarnings MkFoo3Sym0 where
      suppressUnusedWarnings = snd ((,) MkFoo3Sym0KindInference ())
    type MkFoo3Sym1 :: Bool -> (~>) Bool Foo3
    data MkFoo3Sym1 (a0123456789876543210 :: Bool) :: (~>) Bool Foo3
      where
        MkFoo3Sym1KindInference :: SameKind (Apply (MkFoo3Sym1 a0123456789876543210) arg) (MkFoo3Sym2 a0123456789876543210 arg) =>
                                   MkFoo3Sym1 a0123456789876543210 a0123456789876543210
    type instance Apply (MkFoo3Sym1 a0123456789876543210) a0123456789876543210 = MkFoo3 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (MkFoo3Sym1 a0123456789876543210) where
      suppressUnusedWarnings = snd ((,) MkFoo3Sym1KindInference ())
    type MkFoo3Sym2 :: Bool -> Bool -> Foo3
    type family MkFoo3Sym2 (a0123456789876543210 :: Bool) (a0123456789876543210 :: Bool) :: Foo3 where
      MkFoo3Sym2 a0123456789876543210 a0123456789876543210 = MkFoo3 a0123456789876543210 a0123456789876543210
    type (***@#@$) :: (~>) Foo3 Bool
    data (***@#@$) :: (~>) Foo3 Bool
      where
        (:***@#@$###) :: SameKind (Apply (***@#@$) arg) ((***@#@$$) arg) =>
                         (***@#@$) a0123456789876543210
    type instance Apply (***@#@$) a0123456789876543210 = (***) a0123456789876543210
    instance SuppressUnusedWarnings (***@#@$) where
      suppressUnusedWarnings = snd ((,) (:***@#@$###) ())
    type (***@#@$$) :: Foo3 -> Bool
    type family (***@#@$$) (a0123456789876543210 :: Foo3) :: Bool where
      (***@#@$$) a0123456789876543210 = (***) a0123456789876543210
    type GetFoo3aSym0 :: (~>) Foo3 Bool
    data GetFoo3aSym0 :: (~>) Foo3 Bool
      where
        GetFoo3aSym0KindInference :: SameKind (Apply GetFoo3aSym0 arg) (GetFoo3aSym1 arg) =>
                                     GetFoo3aSym0 a0123456789876543210
    type instance Apply GetFoo3aSym0 a0123456789876543210 = GetFoo3a a0123456789876543210
    instance SuppressUnusedWarnings GetFoo3aSym0 where
      suppressUnusedWarnings = snd ((,) GetFoo3aSym0KindInference ())
    type GetFoo3aSym1 :: Foo3 -> Bool
    type family GetFoo3aSym1 (a0123456789876543210 :: Foo3) :: Bool where
      GetFoo3aSym1 a0123456789876543210 = GetFoo3a a0123456789876543210
    type (***) :: Foo3 -> Bool
    type family (***) (a :: Foo3) :: Bool where
      (***) (MkFoo3 _ field) = field
    type GetFoo3a :: Foo3 -> Bool
    type family GetFoo3a (a :: Foo3) :: Bool where
      GetFoo3a (MkFoo3 field _) = field
    type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural
                                          -> Foo1 -> Symbol -> Symbol
    type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Foo1) (a :: Symbol) :: Symbol where
      ShowsPrec_0123456789876543210 _ MkFoo1 a_0123456789876543210 = Apply (Apply ShowStringSym0 "MkFoo1") a_0123456789876543210
    type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo1 ((~>) Symbol Symbol))
    data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo1 ((~>) Symbol Symbol))
      where
        ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>
                                                          ShowsPrec_0123456789876543210Sym0 a0123456789876543210
    type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210
    instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where
      suppressUnusedWarnings
        = snd ((,) ShowsPrec_0123456789876543210Sym0KindInference ())
    type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural
                                              -> (~>) Foo1 ((~>) Symbol Symbol)
    data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) Foo1 ((~>) Symbol Symbol)
      where
        ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where
      suppressUnusedWarnings
        = snd ((,) ShowsPrec_0123456789876543210Sym1KindInference ())
    type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural
                                              -> Foo1 -> (~>) Symbol Symbol
    data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo1) :: (~>) Symbol Symbol
      where
        ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where
      suppressUnusedWarnings
        = snd ((,) ShowsPrec_0123456789876543210Sym2KindInference ())
    type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural
                                              -> Foo1 -> Symbol -> Symbol
    type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo1) (a0123456789876543210 :: Symbol) :: Symbol where
      ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance PShow Foo1 where
      type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a
    type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural
                                          -> Foo2 a -> Symbol -> Symbol
    type family ShowsPrec_0123456789876543210 @a (a :: GHC.Num.Natural.Natural) (a :: Foo2 a) (a :: Symbol) :: Symbol where
      ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo2a arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "MkFoo2a ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210
      ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo2b argL_0123456789876543210 argR_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 5))) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argL_0123456789876543210)) (Apply (Apply (.@#@$) (Apply ShowStringSym0 " `MkFoo2b` ")) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argR_0123456789876543210)))) a_0123456789876543210
      ShowsPrec_0123456789876543210 p_0123456789876543210 ((:*:) arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "(:*:) ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210
      ShowsPrec_0123456789876543210 p_0123456789876543210 ((:&:) argL_0123456789876543210 argR_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 5))) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argL_0123456789876543210)) (Apply (Apply (.@#@$) (Apply ShowStringSym0 " :&: ")) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argR_0123456789876543210)))) a_0123456789876543210
    type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Foo2 a) ((~>) Symbol Symbol))
    data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Foo2 a) ((~>) Symbol Symbol))
      where
        ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>
                                                          ShowsPrec_0123456789876543210Sym0 a0123456789876543210
    type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210
    instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where
      suppressUnusedWarnings
        = snd ((,) ShowsPrec_0123456789876543210Sym0KindInference ())
    type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural
                                              -> (~>) (Foo2 a) ((~>) Symbol Symbol)
    data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) (Foo2 a) ((~>) Symbol Symbol)
      where
        ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where
      suppressUnusedWarnings
        = snd ((,) ShowsPrec_0123456789876543210Sym1KindInference ())
    type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural
                                              -> Foo2 a -> (~>) Symbol Symbol
    data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo2 a) :: (~>) Symbol Symbol
      where
        ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where
      suppressUnusedWarnings
        = snd ((,) ShowsPrec_0123456789876543210Sym2KindInference ())
    type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural
                                              -> Foo2 a -> Symbol -> Symbol
    type family ShowsPrec_0123456789876543210Sym3 @a (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo2 a) (a0123456789876543210 :: Symbol) :: Symbol where
      ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance PShow (Foo2 a) where
      type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a
    type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural
                                          -> Foo3 -> Symbol -> Symbol
    type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Foo3) (a :: Symbol) :: Symbol where
      ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo3 arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "MkFoo3 ")) (Apply (Apply (.@#@$) (Apply ShowCharSym0 '{')) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "getFoo3a = ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 0)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowCommaSpaceSym0) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "(***) = ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 0)) arg_0123456789876543210)) (Apply ShowCharSym0 '}'))))))))) a_0123456789876543210
    type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo3 ((~>) Symbol Symbol))
    data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo3 ((~>) Symbol Symbol))
      where
        ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>
                                                          ShowsPrec_0123456789876543210Sym0 a0123456789876543210
    type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210
    instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where
      suppressUnusedWarnings
        = snd ((,) ShowsPrec_0123456789876543210Sym0KindInference ())
    type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural
                                              -> (~>) Foo3 ((~>) Symbol Symbol)
    data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) Foo3 ((~>) Symbol Symbol)
      where
        ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where
      suppressUnusedWarnings
        = snd ((,) ShowsPrec_0123456789876543210Sym1KindInference ())
    type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural
                                              -> Foo3 -> (~>) Symbol Symbol
    data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo3) :: (~>) Symbol Symbol
      where
        ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where
      suppressUnusedWarnings
        = snd ((,) ShowsPrec_0123456789876543210Sym2KindInference ())
    type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural
                                              -> Foo3 -> Symbol -> Symbol
    type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo3) (a0123456789876543210 :: Symbol) :: Symbol where
      ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance PShow Foo3 where
      type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a
    infixl 5 :%&:
    infixl 5 :%*:
    infixl 5 `SMkFoo2b`
    (%***) ::
      (forall (t :: Foo3).
       Sing t -> Sing (Apply (***@#@$) t :: Bool) :: Type)
    sGetFoo3a ::
      (forall (t :: Foo3).
       Sing t -> Sing (Apply GetFoo3aSym0 t :: Bool) :: Type)
    (%***) (SMkFoo3 _ (sField :: Sing field)) = sField
    sGetFoo3a (SMkFoo3 (sField :: Sing field) _) = sField
    instance SingI ((***@#@$) :: (~>) Foo3 Bool) where
      sing = singFun1 @(***@#@$) (%***)
    instance SingI (GetFoo3aSym0 :: (~>) Foo3 Bool) where
      sing = singFun1 @GetFoo3aSym0 sGetFoo3a
    data SFoo1 :: Foo1 -> Type where SMkFoo1 :: SFoo1 (MkFoo1 :: Foo1)
    type instance Sing @Foo1 = SFoo1
    instance SingKind Foo1 where
      type Demote Foo1 = Foo1
      fromSing SMkFoo1 = MkFoo1
      toSing MkFoo1 = SomeSing SMkFoo1
    data SFoo2 :: forall a. Foo2 a -> Type
      where
        SMkFoo2a :: forall a (n :: a) (n :: a).
                    (Sing n) -> (Sing n) -> SFoo2 (MkFoo2a n n :: Foo2 a)
        SMkFoo2b :: forall a (n :: a) (n :: a).
                    (Sing n) -> (Sing n) -> SFoo2 (MkFoo2b n n :: Foo2 a)
        (:%*:) :: forall a (n :: a) (n :: a).
                  (Sing n) -> (Sing n) -> SFoo2 ((:*:) n n :: Foo2 a)
        (:%&:) :: forall a (n :: a) (n :: a).
                  (Sing n) -> (Sing n) -> SFoo2 ((:&:) n n :: Foo2 a)
    type instance Sing @(Foo2 a) = SFoo2
    instance SingKind a => SingKind (Foo2 a) where
      type Demote (Foo2 a) = Foo2 (Demote a)
      fromSing (SMkFoo2a b b) = MkFoo2a (fromSing b) (fromSing b)
      fromSing (SMkFoo2b b b) = MkFoo2b (fromSing b) (fromSing b)
      fromSing ((:%*:) b b) = (:*:) (fromSing b) (fromSing b)
      fromSing ((:%&:) b b) = (:&:) (fromSing b) (fromSing b)
      toSing (MkFoo2a (b :: Demote a) (b :: Demote a))
        = case (,) (toSing b :: SomeSing a) (toSing b :: SomeSing a) of
            (,) (SomeSing c) (SomeSing c) -> SomeSing (SMkFoo2a c c)
      toSing (MkFoo2b (b :: Demote a) (b :: Demote a))
        = case (,) (toSing b :: SomeSing a) (toSing b :: SomeSing a) of
            (,) (SomeSing c) (SomeSing c) -> SomeSing (SMkFoo2b c c)
      toSing ((:*:) (b :: Demote a) (b :: Demote a))
        = case (,) (toSing b :: SomeSing a) (toSing b :: SomeSing a) of
            (,) (SomeSing c) (SomeSing c) -> SomeSing ((:%*:) c c)
      toSing ((:&:) (b :: Demote a) (b :: Demote a))
        = case (,) (toSing b :: SomeSing a) (toSing b :: SomeSing a) of
            (,) (SomeSing c) (SomeSing c) -> SomeSing ((:%&:) c c)
    data SFoo3 :: Foo3 -> Type
      where
        SMkFoo3 :: forall (n :: Bool) (n :: Bool).
                   (Sing n) -> (Sing n) -> SFoo3 (MkFoo3 n n :: Foo3)
    type instance Sing @Foo3 = SFoo3
    instance SingKind Foo3 where
      type Demote Foo3 = Foo3
      fromSing (SMkFoo3 b b) = MkFoo3 (fromSing b) (fromSing b)
      toSing (MkFoo3 (b :: Demote Bool) (b :: Demote Bool))
        = case
              (,) (toSing b :: SomeSing Bool) (toSing b :: SomeSing Bool)
          of
            (,) (SomeSing c) (SomeSing c) -> SomeSing (SMkFoo3 c c)
    instance SShow Foo1 where
      sShowsPrec ::
        forall (t1 :: GHC.Num.Natural.Natural)
               (t2 :: Foo1)
               (t3 :: Symbol). Sing t1
                               -> Sing t2
                                  -> Sing t3
                                     -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) Foo1 ((~>) Symbol Symbol))
                                                                                    -> Type) t1) t2) t3)
      sShowsPrec
        _
        SMkFoo1
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = applySing
            (applySing
               (singFun2 @ShowStringSym0 sShowString) (sing :: Sing "MkFoo1"))
            sA_0123456789876543210
    instance SShow a => SShow (Foo2 a) where
      sShowsPrec ::
        forall (t1 :: GHC.Num.Natural.Natural)
               (t2 :: Foo2 a)
               (t3 :: Symbol). Sing t1
                               -> Sing t2
                                  -> Sing t3
                                     -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) (Foo2 a) ((~>) Symbol Symbol))
                                                                                    -> Type) t1) t2) t3)
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        (SMkFoo2a (sArg_0123456789876543210 :: Sing arg_0123456789876543210)
                  (sArg_0123456789876543210 :: Sing arg_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = applySing
            (applySing
               (applySing
                  (singFun3 @ShowParenSym0 sShowParen)
                  (applySing
                     (applySing (singFun2 @(>@#@$) (%>)) sP_0123456789876543210)
                     (sFromInteger (sing :: Sing 10))))
               (applySing
                  (applySing
                     (singFun3 @(.@#@$) (%.))
                     (applySing
                        (singFun2 @ShowStringSym0 sShowString) (sing :: Sing "MkFoo2a ")))
                  (applySing
                     (applySing
                        (singFun3 @(.@#@$) (%.))
                        (applySing
                           (applySing
                              (singFun3 @ShowsPrecSym0 sShowsPrec)
                              (sFromInteger (sing :: Sing 11)))
                           sArg_0123456789876543210))
                     (applySing
                        (applySing
                           (singFun3 @(.@#@$) (%.)) (singFun1 @ShowSpaceSym0 sShowSpace))
                        (applySing
                           (applySing
                              (singFun3 @ShowsPrecSym0 sShowsPrec)
                              (sFromInteger (sing :: Sing 11)))
                           sArg_0123456789876543210)))))
            sA_0123456789876543210
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        (SMkFoo2b (sArgL_0123456789876543210 :: Sing argL_0123456789876543210)
                  (sArgR_0123456789876543210 :: Sing argR_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = applySing
            (applySing
               (applySing
                  (singFun3 @ShowParenSym0 sShowParen)
                  (applySing
                     (applySing (singFun2 @(>@#@$) (%>)) sP_0123456789876543210)
                     (sFromInteger (sing :: Sing 5))))
               (applySing
                  (applySing
                     (singFun3 @(.@#@$) (%.))
                     (applySing
                        (applySing
                           (singFun3 @ShowsPrecSym0 sShowsPrec)
                           (sFromInteger (sing :: Sing 6)))
                        sArgL_0123456789876543210))
                  (applySing
                     (applySing
                        (singFun3 @(.@#@$) (%.))
                        (applySing
                           (singFun2 @ShowStringSym0 sShowString)
                           (sing :: Sing " `MkFoo2b` ")))
                     (applySing
                        (applySing
                           (singFun3 @ShowsPrecSym0 sShowsPrec)
                           (sFromInteger (sing :: Sing 6)))
                        sArgR_0123456789876543210))))
            sA_0123456789876543210
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        ((:%*:) (sArg_0123456789876543210 :: Sing arg_0123456789876543210)
                (sArg_0123456789876543210 :: Sing arg_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = applySing
            (applySing
               (applySing
                  (singFun3 @ShowParenSym0 sShowParen)
                  (applySing
                     (applySing (singFun2 @(>@#@$) (%>)) sP_0123456789876543210)
                     (sFromInteger (sing :: Sing 10))))
               (applySing
                  (applySing
                     (singFun3 @(.@#@$) (%.))
                     (applySing
                        (singFun2 @ShowStringSym0 sShowString) (sing :: Sing "(:*:) ")))
                  (applySing
                     (applySing
                        (singFun3 @(.@#@$) (%.))
                        (applySing
                           (applySing
                              (singFun3 @ShowsPrecSym0 sShowsPrec)
                              (sFromInteger (sing :: Sing 11)))
                           sArg_0123456789876543210))
                     (applySing
                        (applySing
                           (singFun3 @(.@#@$) (%.)) (singFun1 @ShowSpaceSym0 sShowSpace))
                        (applySing
                           (applySing
                              (singFun3 @ShowsPrecSym0 sShowsPrec)
                              (sFromInteger (sing :: Sing 11)))
                           sArg_0123456789876543210)))))
            sA_0123456789876543210
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        ((:%&:) (sArgL_0123456789876543210 :: Sing argL_0123456789876543210)
                (sArgR_0123456789876543210 :: Sing argR_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = applySing
            (applySing
               (applySing
                  (singFun3 @ShowParenSym0 sShowParen)
                  (applySing
                     (applySing (singFun2 @(>@#@$) (%>)) sP_0123456789876543210)
                     (sFromInteger (sing :: Sing 5))))
               (applySing
                  (applySing
                     (singFun3 @(.@#@$) (%.))
                     (applySing
                        (applySing
                           (singFun3 @ShowsPrecSym0 sShowsPrec)
                           (sFromInteger (sing :: Sing 6)))
                        sArgL_0123456789876543210))
                  (applySing
                     (applySing
                        (singFun3 @(.@#@$) (%.))
                        (applySing
                           (singFun2 @ShowStringSym0 sShowString) (sing :: Sing " :&: ")))
                     (applySing
                        (applySing
                           (singFun3 @ShowsPrecSym0 sShowsPrec)
                           (sFromInteger (sing :: Sing 6)))
                        sArgR_0123456789876543210))))
            sA_0123456789876543210
    instance SShow Bool => SShow Foo3 where
      sShowsPrec ::
        forall (t1 :: GHC.Num.Natural.Natural)
               (t2 :: Foo3)
               (t3 :: Symbol). Sing t1
                               -> Sing t2
                                  -> Sing t3
                                     -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) Foo3 ((~>) Symbol Symbol))
                                                                                    -> Type) t1) t2) t3)
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        (SMkFoo3 (sArg_0123456789876543210 :: Sing arg_0123456789876543210)
                 (sArg_0123456789876543210 :: Sing arg_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = applySing
            (applySing
               (applySing
                  (singFun3 @ShowParenSym0 sShowParen)
                  (applySing
                     (applySing (singFun2 @(>@#@$) (%>)) sP_0123456789876543210)
                     (sFromInteger (sing :: Sing 10))))
               (applySing
                  (applySing
                     (singFun3 @(.@#@$) (%.))
                     (applySing
                        (singFun2 @ShowStringSym0 sShowString) (sing :: Sing "MkFoo3 ")))
                  (applySing
                     (applySing
                        (singFun3 @(.@#@$) (%.))
                        (applySing (singFun2 @ShowCharSym0 sShowChar) (sing :: Sing '{')))
                     (applySing
                        (applySing
                           (singFun3 @(.@#@$) (%.))
                           (applySing
                              (singFun2 @ShowStringSym0 sShowString)
                              (sing :: Sing "getFoo3a = ")))
                        (applySing
                           (applySing
                              (singFun3 @(.@#@$) (%.))
                              (applySing
                                 (applySing
                                    (singFun3 @ShowsPrecSym0 sShowsPrec)
                                    (sFromInteger (sing :: Sing 0)))
                                 sArg_0123456789876543210))
                           (applySing
                              (applySing
                                 (singFun3 @(.@#@$) (%.))
                                 (singFun1 @ShowCommaSpaceSym0 sShowCommaSpace))
                              (applySing
                                 (applySing
                                    (singFun3 @(.@#@$) (%.))
                                    (applySing
                                       (singFun2 @ShowStringSym0 sShowString)
                                       (sing :: Sing "(***) = ")))
                                 (applySing
                                    (applySing
                                       (singFun3 @(.@#@$) (%.))
                                       (applySing
                                          (applySing
                                             (singFun3 @ShowsPrecSym0 sShowsPrec)
                                             (sFromInteger (sing :: Sing 0)))
                                          sArg_0123456789876543210))
                                    (applySing
                                       (singFun2 @ShowCharSym0 sShowChar)
                                       (sing :: Sing '}'))))))))))
            sA_0123456789876543210
    deriving instance Show (SFoo1 (z :: Foo1))
    deriving instance Data.Singletons.ShowSing.ShowSing a =>
                      Show (SFoo2 (z :: Foo2 a))
    deriving instance Data.Singletons.ShowSing.ShowSing Bool =>
                      Show (SFoo3 (z :: Foo3))
    instance SingI MkFoo1 where
      sing = SMkFoo1
    instance (SingI n, SingI n) =>
             SingI (MkFoo2a (n :: a) (n :: a)) where
      sing = SMkFoo2a sing sing
    instance SingI n => SingI1 (MkFoo2a (n :: a)) where
      liftSing = SMkFoo2a sing
    instance SingI2 MkFoo2a where
      liftSing2 = SMkFoo2a
    instance SingI (MkFoo2aSym0 :: (~>) a ((~>) a (Foo2 a))) where
      sing = singFun2 @MkFoo2aSym0 SMkFoo2a
    instance SingI d =>
             SingI (MkFoo2aSym1 (d :: a) :: (~>) a (Foo2 a)) where
      sing = singFun1 @(MkFoo2aSym1 (d :: a)) (SMkFoo2a (sing @d))
    instance SingI1 (MkFoo2aSym1 :: a -> (~>) a (Foo2 a)) where
      liftSing (s :: Sing (d :: a))
        = singFun1 @(MkFoo2aSym1 (d :: a)) (SMkFoo2a s)
    instance (SingI n, SingI n) =>
             SingI (MkFoo2b (n :: a) (n :: a)) where
      sing = SMkFoo2b sing sing
    instance SingI n => SingI1 (MkFoo2b (n :: a)) where
      liftSing = SMkFoo2b sing
    instance SingI2 MkFoo2b where
      liftSing2 = SMkFoo2b
    instance SingI (MkFoo2bSym0 :: (~>) a ((~>) a (Foo2 a))) where
      sing = singFun2 @MkFoo2bSym0 SMkFoo2b
    instance SingI d =>
             SingI (MkFoo2bSym1 (d :: a) :: (~>) a (Foo2 a)) where
      sing = singFun1 @(MkFoo2bSym1 (d :: a)) (SMkFoo2b (sing @d))
    instance SingI1 (MkFoo2bSym1 :: a -> (~>) a (Foo2 a)) where
      liftSing (s :: Sing (d :: a))
        = singFun1 @(MkFoo2bSym1 (d :: a)) (SMkFoo2b s)
    instance (SingI n, SingI n) =>
             SingI ((:*:) (n :: a) (n :: a)) where
      sing = (:%*:) sing sing
    instance SingI n => SingI1 ((:*:) (n :: a)) where
      liftSing = (:%*:) sing
    instance SingI2 (:*:) where
      liftSing2 = (:%*:)
    instance SingI ((:*:@#@$) :: (~>) a ((~>) a (Foo2 a))) where
      sing = singFun2 @(:*:@#@$) (:%*:)
    instance SingI d =>
             SingI ((:*:@#@$$) (d :: a) :: (~>) a (Foo2 a)) where
      sing = singFun1 @((:*:@#@$$) (d :: a)) ((:%*:) (sing @d))
    instance SingI1 ((:*:@#@$$) :: a -> (~>) a (Foo2 a)) where
      liftSing (s :: Sing (d :: a))
        = singFun1 @((:*:@#@$$) (d :: a)) ((:%*:) s)
    instance (SingI n, SingI n) =>
             SingI ((:&:) (n :: a) (n :: a)) where
      sing = (:%&:) sing sing
    instance SingI n => SingI1 ((:&:) (n :: a)) where
      liftSing = (:%&:) sing
    instance SingI2 (:&:) where
      liftSing2 = (:%&:)
    instance SingI ((:&:@#@$) :: (~>) a ((~>) a (Foo2 a))) where
      sing = singFun2 @(:&:@#@$) (:%&:)
    instance SingI d =>
             SingI ((:&:@#@$$) (d :: a) :: (~>) a (Foo2 a)) where
      sing = singFun1 @((:&:@#@$$) (d :: a)) ((:%&:) (sing @d))
    instance SingI1 ((:&:@#@$$) :: a -> (~>) a (Foo2 a)) where
      liftSing (s :: Sing (d :: a))
        = singFun1 @((:&:@#@$$) (d :: a)) ((:%&:) s)
    instance (SingI n, SingI n) =>
             SingI (MkFoo3 (n :: Bool) (n :: Bool)) where
      sing = SMkFoo3 sing sing
    instance SingI n => SingI1 (MkFoo3 (n :: Bool)) where
      liftSing = SMkFoo3 sing
    instance SingI2 MkFoo3 where
      liftSing2 = SMkFoo3
    instance SingI (MkFoo3Sym0 :: (~>) Bool ((~>) Bool Foo3)) where
      sing = singFun2 @MkFoo3Sym0 SMkFoo3
    instance SingI d =>
             SingI (MkFoo3Sym1 (d :: Bool) :: (~>) Bool Foo3) where
      sing = singFun1 @(MkFoo3Sym1 (d :: Bool)) (SMkFoo3 (sing @d))
    instance SingI1 (MkFoo3Sym1 :: Bool -> (~>) Bool Foo3) where
      liftSing (s :: Sing (d :: Bool))
        = singFun1 @(MkFoo3Sym1 (d :: Bool)) (SMkFoo3 s)