packages feed

singletons-2.6: tests/compile-and-dump/Singletons/AsPattern.ghc88.template

Singletons/AsPattern.hs:(0,0)-(0,0): Splicing declarations
    singletons
      [d| maybePlus :: Maybe Nat -> Maybe Nat
          maybePlus (Just n) = Just (plus (Succ Zero) n)
          maybePlus p@Nothing = p
          bar :: Maybe Nat -> Maybe Nat
          bar x@(Just _) = x
          bar Nothing = Nothing
          baz_ :: Maybe Baz -> Maybe Baz
          baz_ p@Nothing = p
          baz_ p@(Just (Baz _ _ _)) = p
          tup :: (Nat, Nat) -> (Nat, Nat)
          tup p@(_, _) = p
          foo :: [Nat] -> [Nat]
          foo p@[] = p
          foo p@[_] = p
          foo p@(_ : _ : _) = p
          
          data Baz = Baz Nat Nat Nat |]
  ======>
    maybePlus :: Maybe Nat -> Maybe Nat
    maybePlus (Just n) = Just ((plus (Succ Zero)) n)
    maybePlus p@Nothing = p
    bar :: Maybe Nat -> Maybe Nat
    bar x@(Just _) = x
    bar Nothing = Nothing
    data Baz = Baz Nat Nat Nat
    baz_ :: Maybe Baz -> Maybe Baz
    baz_ p@Nothing = p
    baz_ p@(Just (Baz _ _ _)) = p
    tup :: (Nat, Nat) -> (Nat, Nat)
    tup p@(_, _) = p
    foo :: [Nat] -> [Nat]
    foo p@[] = p
    foo p@[_] = p
    foo p@(_ : (_ : _)) = p
    type BazSym3 (t0123456789876543210 :: Nat) (t0123456789876543210 :: Nat) (t0123456789876543210 :: Nat) =
        Baz t0123456789876543210 t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings (BazSym2 t0123456789876543210 t0123456789876543210) where
      suppressUnusedWarnings = snd (((,) BazSym2KindInference) ())
    data BazSym2 (t0123456789876543210 :: Nat) (t0123456789876543210 :: Nat) :: (~>) Nat Baz
      where
        BazSym2KindInference :: forall t0123456789876543210
                                       t0123456789876543210
                                       t0123456789876543210
                                       arg. SameKind (Apply (BazSym2 t0123456789876543210 t0123456789876543210) arg) (BazSym3 t0123456789876543210 t0123456789876543210 arg) =>
                                BazSym2 t0123456789876543210 t0123456789876543210 t0123456789876543210
    type instance Apply (BazSym2 t0123456789876543210 t0123456789876543210) t0123456789876543210 = Baz t0123456789876543210 t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings (BazSym1 t0123456789876543210) where
      suppressUnusedWarnings = snd (((,) BazSym1KindInference) ())
    data BazSym1 (t0123456789876543210 :: Nat) :: (~>) Nat ((~>) Nat Baz)
      where
        BazSym1KindInference :: forall t0123456789876543210
                                       t0123456789876543210
                                       arg. SameKind (Apply (BazSym1 t0123456789876543210) arg) (BazSym2 t0123456789876543210 arg) =>
                                BazSym1 t0123456789876543210 t0123456789876543210
    type instance Apply (BazSym1 t0123456789876543210) t0123456789876543210 = BazSym2 t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings BazSym0 where
      suppressUnusedWarnings = snd (((,) BazSym0KindInference) ())
    data BazSym0 :: (~>) Nat ((~>) Nat ((~>) Nat Baz))
      where
        BazSym0KindInference :: forall t0123456789876543210
                                       arg. SameKind (Apply BazSym0 arg) (BazSym1 arg) =>
                                BazSym0 t0123456789876543210
    type instance Apply BazSym0 t0123456789876543210 = BazSym1 t0123456789876543210
    type Let0123456789876543210PSym0 = Let0123456789876543210P
    type family Let0123456789876543210P where
      Let0123456789876543210P = '[]
    type Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210 =
        Let0123456789876543210P wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings Let0123456789876543210PSym0 where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210PSym0KindInference) ())
    data Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210PSym0KindInference :: forall wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply Let0123456789876543210PSym0 arg) (Let0123456789876543210PSym1 arg) =>
                                                    Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210
    type instance Apply Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210 = Let0123456789876543210P wild_01234567898765432100123456789876543210
    type family Let0123456789876543210P wild_0123456789876543210 where
      Let0123456789876543210P wild_0123456789876543210 = Apply (Apply (:@#@$) wild_0123456789876543210) '[]
    type Let0123456789876543210PSym3 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 =
        Let0123456789876543210P wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings (Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210PSym2KindInference) ())
    data Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210PSym2KindInference :: forall wild_01234567898765432100123456789876543210
                                                           wild_01234567898765432100123456789876543210
                                                           wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply (Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210) arg) (Let0123456789876543210PSym3 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 arg) =>
                                                    Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    type instance Apply (Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210) wild_01234567898765432100123456789876543210 = Let0123456789876543210P wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings (Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210PSym1KindInference) ())
    data Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210PSym1KindInference :: forall wild_01234567898765432100123456789876543210
                                                           wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply (Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210) arg) (Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 arg) =>
                                                    Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    type instance Apply (Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210) wild_01234567898765432100123456789876543210 = Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings Let0123456789876543210PSym0 where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210PSym0KindInference) ())
    data Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210PSym0KindInference :: forall wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply Let0123456789876543210PSym0 arg) (Let0123456789876543210PSym1 arg) =>
                                                    Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210
    type instance Apply Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210 = Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210
    type family Let0123456789876543210P wild_0123456789876543210 wild_0123456789876543210 wild_0123456789876543210 where
      Let0123456789876543210P wild_0123456789876543210 wild_0123456789876543210 wild_0123456789876543210 = Apply (Apply (:@#@$) wild_0123456789876543210) (Apply (Apply (:@#@$) wild_0123456789876543210) wild_0123456789876543210)
    type Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 =
        Let0123456789876543210P wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings (Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210PSym1KindInference) ())
    data Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210PSym1KindInference :: forall wild_01234567898765432100123456789876543210
                                                           wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply (Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210) arg) (Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 arg) =>
                                                    Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    type instance Apply (Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210) wild_01234567898765432100123456789876543210 = Let0123456789876543210P wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings Let0123456789876543210PSym0 where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210PSym0KindInference) ())
    data Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210PSym0KindInference :: forall wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply Let0123456789876543210PSym0 arg) (Let0123456789876543210PSym1 arg) =>
                                                    Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210
    type instance Apply Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210 = Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210
    type family Let0123456789876543210P wild_0123456789876543210 wild_0123456789876543210 where
      Let0123456789876543210P wild_0123456789876543210 wild_0123456789876543210 = Apply (Apply Tuple2Sym0 wild_0123456789876543210) wild_0123456789876543210
    type Let0123456789876543210PSym0 = Let0123456789876543210P
    type family Let0123456789876543210P where
      Let0123456789876543210P = NothingSym0
    type Let0123456789876543210PSym3 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 =
        Let0123456789876543210P wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings (Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210PSym2KindInference) ())
    data Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210PSym2KindInference :: forall wild_01234567898765432100123456789876543210
                                                           wild_01234567898765432100123456789876543210
                                                           wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply (Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210) arg) (Let0123456789876543210PSym3 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 arg) =>
                                                    Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    type instance Apply (Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210) wild_01234567898765432100123456789876543210 = Let0123456789876543210P wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings (Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210PSym1KindInference) ())
    data Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210PSym1KindInference :: forall wild_01234567898765432100123456789876543210
                                                           wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply (Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210) arg) (Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 arg) =>
                                                    Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    type instance Apply (Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210) wild_01234567898765432100123456789876543210 = Let0123456789876543210PSym2 wild_01234567898765432100123456789876543210 wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings Let0123456789876543210PSym0 where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210PSym0KindInference) ())
    data Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210PSym0KindInference :: forall wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply Let0123456789876543210PSym0 arg) (Let0123456789876543210PSym1 arg) =>
                                                    Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210
    type instance Apply Let0123456789876543210PSym0 wild_01234567898765432100123456789876543210 = Let0123456789876543210PSym1 wild_01234567898765432100123456789876543210
    type family Let0123456789876543210P wild_0123456789876543210 wild_0123456789876543210 wild_0123456789876543210 where
      Let0123456789876543210P wild_0123456789876543210 wild_0123456789876543210 wild_0123456789876543210 = Apply JustSym0 (Apply (Apply (Apply BazSym0 wild_0123456789876543210) wild_0123456789876543210) wild_0123456789876543210)
    type Let0123456789876543210XSym1 wild_01234567898765432100123456789876543210 =
        Let0123456789876543210X wild_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings Let0123456789876543210XSym0 where
      suppressUnusedWarnings
        = snd (((,) Let0123456789876543210XSym0KindInference) ())
    data Let0123456789876543210XSym0 wild_01234567898765432100123456789876543210
      where
        Let0123456789876543210XSym0KindInference :: forall wild_01234567898765432100123456789876543210
                                                           arg. SameKind (Apply Let0123456789876543210XSym0 arg) (Let0123456789876543210XSym1 arg) =>
                                                    Let0123456789876543210XSym0 wild_01234567898765432100123456789876543210
    type instance Apply Let0123456789876543210XSym0 wild_01234567898765432100123456789876543210 = Let0123456789876543210X wild_01234567898765432100123456789876543210
    type family Let0123456789876543210X wild_0123456789876543210 where
      Let0123456789876543210X wild_0123456789876543210 = Apply JustSym0 wild_0123456789876543210
    type Let0123456789876543210PSym0 = Let0123456789876543210P
    type family Let0123456789876543210P where
      Let0123456789876543210P = NothingSym0
    type FooSym1 (a0123456789876543210 :: [Nat]) =
        Foo a0123456789876543210
    instance SuppressUnusedWarnings FooSym0 where
      suppressUnusedWarnings = snd (((,) FooSym0KindInference) ())
    data FooSym0 :: (~>) [Nat] [Nat]
      where
        FooSym0KindInference :: forall a0123456789876543210
                                       arg. SameKind (Apply FooSym0 arg) (FooSym1 arg) =>
                                FooSym0 a0123456789876543210
    type instance Apply FooSym0 a0123456789876543210 = Foo a0123456789876543210
    type TupSym1 (a0123456789876543210 :: (Nat, Nat)) =
        Tup a0123456789876543210
    instance SuppressUnusedWarnings TupSym0 where
      suppressUnusedWarnings = snd (((,) TupSym0KindInference) ())
    data TupSym0 :: (~>) (Nat, Nat) (Nat, Nat)
      where
        TupSym0KindInference :: forall a0123456789876543210
                                       arg. SameKind (Apply TupSym0 arg) (TupSym1 arg) =>
                                TupSym0 a0123456789876543210
    type instance Apply TupSym0 a0123456789876543210 = Tup a0123456789876543210
    type Baz_Sym1 (a0123456789876543210 :: Maybe Baz) =
        Baz_ a0123456789876543210
    instance SuppressUnusedWarnings Baz_Sym0 where
      suppressUnusedWarnings = snd (((,) Baz_Sym0KindInference) ())
    data Baz_Sym0 :: (~>) (Maybe Baz) (Maybe Baz)
      where
        Baz_Sym0KindInference :: forall a0123456789876543210
                                        arg. SameKind (Apply Baz_Sym0 arg) (Baz_Sym1 arg) =>
                                 Baz_Sym0 a0123456789876543210
    type instance Apply Baz_Sym0 a0123456789876543210 = Baz_ a0123456789876543210
    type BarSym1 (a0123456789876543210 :: Maybe Nat) =
        Bar a0123456789876543210
    instance SuppressUnusedWarnings BarSym0 where
      suppressUnusedWarnings = snd (((,) BarSym0KindInference) ())
    data BarSym0 :: (~>) (Maybe Nat) (Maybe Nat)
      where
        BarSym0KindInference :: forall a0123456789876543210
                                       arg. SameKind (Apply BarSym0 arg) (BarSym1 arg) =>
                                BarSym0 a0123456789876543210
    type instance Apply BarSym0 a0123456789876543210 = Bar a0123456789876543210
    type MaybePlusSym1 (a0123456789876543210 :: Maybe Nat) =
        MaybePlus a0123456789876543210
    instance SuppressUnusedWarnings MaybePlusSym0 where
      suppressUnusedWarnings = snd (((,) MaybePlusSym0KindInference) ())
    data MaybePlusSym0 :: (~>) (Maybe Nat) (Maybe Nat)
      where
        MaybePlusSym0KindInference :: forall a0123456789876543210
                                             arg. SameKind (Apply MaybePlusSym0 arg) (MaybePlusSym1 arg) =>
                                      MaybePlusSym0 a0123456789876543210
    type instance Apply MaybePlusSym0 a0123456789876543210 = MaybePlus a0123456789876543210
    type family Foo (a :: [Nat]) :: [Nat] where
      Foo '[] = Let0123456789876543210PSym0
      Foo '[wild_0123456789876543210] = Let0123456789876543210PSym1 wild_0123456789876543210
      Foo ('(:) wild_0123456789876543210 ('(:) wild_0123456789876543210 wild_0123456789876543210)) = Let0123456789876543210PSym3 wild_0123456789876543210 wild_0123456789876543210 wild_0123456789876543210
    type family Tup (a :: (Nat, Nat)) :: (Nat, Nat) where
      Tup '(wild_0123456789876543210,
            wild_0123456789876543210) = Let0123456789876543210PSym2 wild_0123456789876543210 wild_0123456789876543210
    type family Baz_ (a :: Maybe Baz) :: Maybe Baz where
      Baz_ 'Nothing = Let0123456789876543210PSym0
      Baz_ ('Just (Baz wild_0123456789876543210 wild_0123456789876543210 wild_0123456789876543210)) = Let0123456789876543210PSym3 wild_0123456789876543210 wild_0123456789876543210 wild_0123456789876543210
    type family Bar (a :: Maybe Nat) :: Maybe Nat where
      Bar ('Just wild_0123456789876543210) = Let0123456789876543210XSym1 wild_0123456789876543210
      Bar 'Nothing = NothingSym0
    type family MaybePlus (a :: Maybe Nat) :: Maybe Nat where
      MaybePlus ('Just n) = Apply JustSym0 (Apply (Apply PlusSym0 (Apply SuccSym0 ZeroSym0)) n)
      MaybePlus 'Nothing = Let0123456789876543210PSym0
    sFoo ::
      forall (t :: [Nat]). Sing t -> Sing (Apply FooSym0 t :: [Nat])
    sTup ::
      forall (t :: (Nat, Nat)).
      Sing t -> Sing (Apply TupSym0 t :: (Nat, Nat))
    sBaz_ ::
      forall (t :: Maybe Baz).
      Sing t -> Sing (Apply Baz_Sym0 t :: Maybe Baz)
    sBar ::
      forall (t :: Maybe Nat).
      Sing t -> Sing (Apply BarSym0 t :: Maybe Nat)
    sMaybePlus ::
      forall (t :: Maybe Nat).
      Sing t -> Sing (Apply MaybePlusSym0 t :: Maybe Nat)
    sFoo SNil
      = let
          sP :: Sing Let0123456789876543210PSym0
          sP = SNil
        in sP
    sFoo
      (SCons (sWild_0123456789876543210 :: Sing wild_0123456789876543210)
             SNil)
      = let
          sP :: Sing (Let0123456789876543210PSym1 wild_0123456789876543210)
          sP
            = (applySing
                 ((applySing ((singFun2 @(:@#@$)) SCons))
                    sWild_0123456789876543210))
                SNil
        in sP
    sFoo
      (SCons (sWild_0123456789876543210 :: Sing wild_0123456789876543210)
             (SCons (sWild_0123456789876543210 :: Sing wild_0123456789876543210)
                    (sWild_0123456789876543210 :: Sing wild_0123456789876543210)))
      = let
          sP ::
            Sing (Let0123456789876543210PSym3 wild_0123456789876543210 wild_0123456789876543210 wild_0123456789876543210)
          sP
            = (applySing
                 ((applySing ((singFun2 @(:@#@$)) SCons))
                    sWild_0123456789876543210))
                ((applySing
                    ((applySing ((singFun2 @(:@#@$)) SCons))
                       sWild_0123456789876543210))
                   sWild_0123456789876543210)
        in sP
    sTup
      (STuple2 (sWild_0123456789876543210 :: Sing wild_0123456789876543210)
               (sWild_0123456789876543210 :: Sing wild_0123456789876543210))
      = let
          sP ::
            Sing (Let0123456789876543210PSym2 wild_0123456789876543210 wild_0123456789876543210)
          sP
            = (applySing
                 ((applySing ((singFun2 @Tuple2Sym0) STuple2))
                    sWild_0123456789876543210))
                sWild_0123456789876543210
        in sP
    sBaz_ SNothing
      = let
          sP :: Sing Let0123456789876543210PSym0
          sP = SNothing
        in sP
    sBaz_
      (SJust (SBaz (sWild_0123456789876543210 :: Sing wild_0123456789876543210)
                   (sWild_0123456789876543210 :: Sing wild_0123456789876543210)
                   (sWild_0123456789876543210 :: Sing wild_0123456789876543210)))
      = let
          sP ::
            Sing (Let0123456789876543210PSym3 wild_0123456789876543210 wild_0123456789876543210 wild_0123456789876543210)
          sP
            = (applySing ((singFun1 @JustSym0) SJust))
                ((applySing
                    ((applySing
                        ((applySing ((singFun3 @BazSym0) SBaz)) sWild_0123456789876543210))
                       sWild_0123456789876543210))
                   sWild_0123456789876543210)
        in sP
    sBar
      (SJust (sWild_0123456789876543210 :: Sing wild_0123456789876543210))
      = let
          sX :: Sing (Let0123456789876543210XSym1 wild_0123456789876543210)
          sX
            = (applySing ((singFun1 @JustSym0) SJust))
                sWild_0123456789876543210
        in sX
    sBar SNothing = SNothing
    sMaybePlus (SJust (sN :: Sing n))
      = (applySing ((singFun1 @JustSym0) SJust))
          ((applySing
              ((applySing ((singFun2 @PlusSym0) sPlus))
                 ((applySing ((singFun1 @SuccSym0) SSucc)) SZero)))
             sN)
    sMaybePlus SNothing
      = let
          sP :: Sing Let0123456789876543210PSym0
          sP = SNothing
        in sP
    instance SingI (FooSym0 :: (~>) [Nat] [Nat]) where
      sing = (singFun1 @FooSym0) sFoo
    instance SingI (TupSym0 :: (~>) (Nat, Nat) (Nat, Nat)) where
      sing = (singFun1 @TupSym0) sTup
    instance SingI (Baz_Sym0 :: (~>) (Maybe Baz) (Maybe Baz)) where
      sing = (singFun1 @Baz_Sym0) sBaz_
    instance SingI (BarSym0 :: (~>) (Maybe Nat) (Maybe Nat)) where
      sing = (singFun1 @BarSym0) sBar
    instance SingI (MaybePlusSym0 :: (~>) (Maybe Nat) (Maybe Nat)) where
      sing = (singFun1 @MaybePlusSym0) sMaybePlus
    data SBaz :: Baz -> GHC.Types.Type
      where
        SBaz :: forall (n :: Nat) (n :: Nat) (n :: Nat).
                (Sing (n :: Nat))
                -> (Sing (n :: Nat)) -> (Sing (n :: Nat)) -> SBaz (Baz n n n)
    type instance Sing @Baz = SBaz
    instance SingKind Baz where
      type Demote Baz = Baz
      fromSing (SBaz b b b)
        = ((Baz (fromSing b)) (fromSing b)) (fromSing b)
      toSing (Baz (b :: Demote Nat) (b :: Demote Nat) (b :: Demote Nat))
        = case
              (((,,) (toSing b :: SomeSing Nat)) (toSing b :: SomeSing Nat))
                (toSing b :: SomeSing Nat)
          of {
            (,,) (SomeSing c) (SomeSing c) (SomeSing c)
              -> SomeSing (((SBaz c) c) c) }
    instance (SingI n, SingI n, SingI n) =>
             SingI (Baz (n :: Nat) (n :: Nat) (n :: Nat)) where
      sing = ((SBaz sing) sing) sing
    instance SingI (BazSym0 :: (~>) Nat ((~>) Nat ((~>) Nat Baz))) where
      sing = (singFun3 @BazSym0) SBaz
    instance SingI d =>
             SingI (BazSym1 (d :: Nat) :: (~>) Nat ((~>) Nat Baz)) where
      sing = (singFun2 @(BazSym1 (d :: Nat))) (SBaz (sing @d))
    instance (SingI d, SingI d) =>
             SingI (BazSym2 (d :: Nat) (d :: Nat) :: (~>) Nat Baz) where
      sing
        = (singFun1 @(BazSym2 (d :: Nat) (d :: Nat)))
            ((SBaz (sing @d)) (sing @d))