packages feed

singletons-2.3: tests/compile-and-dump/Singletons/Lambdas.ghc82.template

Singletons/Lambdas.hs:(0,0)-(0,0): Splicing declarations
    singletons
      [d| foo0 :: a -> b -> a
          foo0 = (\ x y -> x)
          foo1 :: a -> b -> a
          foo1 x = (\ _ -> x)
          foo2 :: a -> b -> a
          foo2 x y = (\ _ -> x) y
          foo3 :: a -> a
          foo3 x = (\ y -> y) x
          foo4 :: a -> b -> c -> a
          foo4 x y z = (\ _ _ -> x) y z
          foo5 :: a -> b -> b
          foo5 x y = (\ x -> x) y
          foo6 :: a -> b -> a
          foo6 a b = (\ x -> \ _ -> x) a b
          foo7 :: a -> b -> b
          foo7 x y = (\ (_, b) -> b) (x, y)
          foo8 :: Foo a b -> a
          foo8 x = (\ (Foo a _) -> a) x
          
          data Foo a b = Foo a b |]
  ======>
    foo0 :: a -> b -> a
    foo0 = \ x y -> x
    foo1 :: a -> b -> a
    foo1 x = \ _ -> x
    foo2 :: a -> b -> a
    foo2 x y = (\ _ -> x) y
    foo3 :: a -> a
    foo3 x = (\ y -> y) x
    foo4 :: a -> b -> c -> a
    foo4 x y z = ((\ _ _ -> x) y) z
    foo5 :: a -> b -> b
    foo5 x y = (\ x -> x) y
    foo6 :: a -> b -> a
    foo6 a b = ((\ x -> \ _ -> x) a) b
    foo7 :: a -> b -> b
    foo7 x y = (\ (_, b) -> b) (x, y)
    data Foo a b = Foo a b
    foo8 :: Foo a b -> a
    foo8 x = (\ Foo a _ -> a) x
    type FooSym2 (t :: a0123456789876543210) (t :: b0123456789876543210) =
        Foo t t
    instance SuppressUnusedWarnings FooSym1 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) FooSym1KindInference) GHC.Tuple.())
    data FooSym1 (l :: a0123456789876543210) (l :: TyFun b0123456789876543210 (Foo a0123456789876543210 b0123456789876543210))
      = forall arg. SameKind (Apply (FooSym1 l) arg) (FooSym2 l arg) =>
        FooSym1KindInference
    type instance Apply (FooSym1 l) l = Foo l l
    instance SuppressUnusedWarnings FooSym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) FooSym0KindInference) GHC.Tuple.())
    data FooSym0 (l :: TyFun a0123456789876543210 (TyFun b0123456789876543210 (Foo a0123456789876543210 b0123456789876543210)
                                                   -> GHC.Types.Type))
      = forall arg. SameKind (Apply FooSym0 arg) (FooSym1 arg) =>
        FooSym0KindInference
    type instance Apply FooSym0 l = FooSym1 l
    type family Case_0123456789876543210 x arg_0123456789876543210 t where
      Case_0123456789876543210 x arg_0123456789876543210 (Foo a _z_0123456789876543210) = a
    type family Lambda_0123456789876543210 x t where
      Lambda_0123456789876543210 x arg_0123456789876543210 = Case_0123456789876543210 x arg_0123456789876543210 arg_0123456789876543210
    type Lambda_0123456789876543210Sym2 t t =
        Lambda_0123456789876543210 t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type family Case_0123456789876543210 x y arg_0123456789876543210 t where
      Case_0123456789876543210 x y arg_0123456789876543210 '(_z_0123456789876543210,
                                                             b) = b
    type family Lambda_0123456789876543210 x y t where
      Lambda_0123456789876543210 x y arg_0123456789876543210 = Case_0123456789876543210 x y arg_0123456789876543210 arg_0123456789876543210
    type Lambda_0123456789876543210Sym3 t t t =
        Lambda_0123456789876543210 t t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym2 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym2KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym2 l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym2 l l) arg) (Lambda_0123456789876543210Sym3 l l arg) =>
        Lambda_0123456789876543210Sym2KindInference
    type instance Apply (Lambda_0123456789876543210Sym2 l l) l = Lambda_0123456789876543210 l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210Sym2 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type family Case_0123456789876543210 a b x arg_0123456789876543210 t where
      Case_0123456789876543210 a b x arg_0123456789876543210 _z_0123456789876543210 = x
    type family Lambda_0123456789876543210 a b x t where
      Lambda_0123456789876543210 a b x arg_0123456789876543210 = Case_0123456789876543210 a b x arg_0123456789876543210 arg_0123456789876543210
    type Lambda_0123456789876543210Sym4 t t t t =
        Lambda_0123456789876543210 t t t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym3 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym3KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym3 l l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym3 l l l) arg) (Lambda_0123456789876543210Sym4 l l l arg) =>
        Lambda_0123456789876543210Sym3KindInference
    type instance Apply (Lambda_0123456789876543210Sym3 l l l) l = Lambda_0123456789876543210 l l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym2 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym2KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym2 l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym2 l l) arg) (Lambda_0123456789876543210Sym3 l l arg) =>
        Lambda_0123456789876543210Sym2KindInference
    type instance Apply (Lambda_0123456789876543210Sym2 l l) l = Lambda_0123456789876543210Sym3 l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210Sym2 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type family Lambda_0123456789876543210 a b t where
      Lambda_0123456789876543210 a b x = Apply (Apply (Apply Lambda_0123456789876543210Sym0 a) b) x
    type Lambda_0123456789876543210Sym3 t t t =
        Lambda_0123456789876543210 t t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym2 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym2KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym2 l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym2 l l) arg) (Lambda_0123456789876543210Sym3 l l arg) =>
        Lambda_0123456789876543210Sym2KindInference
    type instance Apply (Lambda_0123456789876543210Sym2 l l) l = Lambda_0123456789876543210 l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210Sym2 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type family Lambda_0123456789876543210 x y t where
      Lambda_0123456789876543210 x y x = x
    type Lambda_0123456789876543210Sym3 t t t =
        Lambda_0123456789876543210 t t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym2 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym2KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym2 l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym2 l l) arg) (Lambda_0123456789876543210Sym3 l l arg) =>
        Lambda_0123456789876543210Sym2KindInference
    type instance Apply (Lambda_0123456789876543210Sym2 l l) l = Lambda_0123456789876543210 l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210Sym2 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type family Case_0123456789876543210 x y z arg_0123456789876543210 arg_0123456789876543210 t where
      Case_0123456789876543210 x y z arg_0123456789876543210 arg_0123456789876543210 '(_z_0123456789876543210,
                                                                                       _z_0123456789876543210) = x
    type family Lambda_0123456789876543210 x y z t t where
      Lambda_0123456789876543210 x y z arg_0123456789876543210 arg_0123456789876543210 = Case_0123456789876543210 x y z arg_0123456789876543210 arg_0123456789876543210 (Apply (Apply Tuple2Sym0 arg_0123456789876543210) arg_0123456789876543210)
    type Lambda_0123456789876543210Sym5 t t t t t =
        Lambda_0123456789876543210 t t t t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym4 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym4KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym4 l l l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym4 l l l l) arg) (Lambda_0123456789876543210Sym5 l l l l arg) =>
        Lambda_0123456789876543210Sym4KindInference
    type instance Apply (Lambda_0123456789876543210Sym4 l l l l) l = Lambda_0123456789876543210 l l l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym3 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym3KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym3 l l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym3 l l l) arg) (Lambda_0123456789876543210Sym4 l l l arg) =>
        Lambda_0123456789876543210Sym3KindInference
    type instance Apply (Lambda_0123456789876543210Sym3 l l l) l = Lambda_0123456789876543210Sym4 l l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym2 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym2KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym2 l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym2 l l) arg) (Lambda_0123456789876543210Sym3 l l arg) =>
        Lambda_0123456789876543210Sym2KindInference
    type instance Apply (Lambda_0123456789876543210Sym2 l l) l = Lambda_0123456789876543210Sym3 l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210Sym2 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type family Lambda_0123456789876543210 x t where
      Lambda_0123456789876543210 x y = y
    type Lambda_0123456789876543210Sym2 t t =
        Lambda_0123456789876543210 t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type family Case_0123456789876543210 x y arg_0123456789876543210 t where
      Case_0123456789876543210 x y arg_0123456789876543210 _z_0123456789876543210 = x
    type family Lambda_0123456789876543210 x y t where
      Lambda_0123456789876543210 x y arg_0123456789876543210 = Case_0123456789876543210 x y arg_0123456789876543210 arg_0123456789876543210
    type Lambda_0123456789876543210Sym3 t t t =
        Lambda_0123456789876543210 t t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym2 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym2KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym2 l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym2 l l) arg) (Lambda_0123456789876543210Sym3 l l arg) =>
        Lambda_0123456789876543210Sym2KindInference
    type instance Apply (Lambda_0123456789876543210Sym2 l l) l = Lambda_0123456789876543210 l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210Sym2 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type family Case_0123456789876543210 x arg_0123456789876543210 a_0123456789876543210 t where
      Case_0123456789876543210 x arg_0123456789876543210 a_0123456789876543210 _z_0123456789876543210 = x
    type family Lambda_0123456789876543210 x a_0123456789876543210 t where
      Lambda_0123456789876543210 x a_0123456789876543210 arg_0123456789876543210 = Case_0123456789876543210 x arg_0123456789876543210 a_0123456789876543210 arg_0123456789876543210
    type Lambda_0123456789876543210Sym3 t t t =
        Lambda_0123456789876543210 t t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym2 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym2KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym2 l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym2 l l) arg) (Lambda_0123456789876543210Sym3 l l arg) =>
        Lambda_0123456789876543210Sym2KindInference
    type instance Apply (Lambda_0123456789876543210Sym2 l l) l = Lambda_0123456789876543210 l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210Sym2 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type family Lambda_0123456789876543210 a_0123456789876543210 a_0123456789876543210 t t where
      Lambda_0123456789876543210 a_0123456789876543210 a_0123456789876543210 x y = x
    type Lambda_0123456789876543210Sym4 t t t t =
        Lambda_0123456789876543210 t t t t
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym3 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym3KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym3 l l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym3 l l l) arg) (Lambda_0123456789876543210Sym4 l l l arg) =>
        Lambda_0123456789876543210Sym3KindInference
    type instance Apply (Lambda_0123456789876543210Sym3 l l l) l = Lambda_0123456789876543210 l l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym2 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym2KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym2 l l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym2 l l) arg) (Lambda_0123456789876543210Sym3 l l arg) =>
        Lambda_0123456789876543210Sym2KindInference
    type instance Apply (Lambda_0123456789876543210Sym2 l l) l = Lambda_0123456789876543210Sym3 l l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym1 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym1KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym1 l l
      = forall arg. SameKind (Apply (Lambda_0123456789876543210Sym1 l) arg) (Lambda_0123456789876543210Sym2 l arg) =>
        Lambda_0123456789876543210Sym1KindInference
    type instance Apply (Lambda_0123456789876543210Sym1 l) l = Lambda_0123456789876543210Sym2 l l
    instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
      suppressUnusedWarnings _
        = snd
            ((GHC.Tuple.(,) Lambda_0123456789876543210Sym0KindInference)
               GHC.Tuple.())
    data Lambda_0123456789876543210Sym0 l
      = forall arg. SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
        Lambda_0123456789876543210Sym0KindInference
    type instance Apply Lambda_0123456789876543210Sym0 l = Lambda_0123456789876543210Sym1 l
    type Foo8Sym1 (t :: Foo a0123456789876543210 b0123456789876543210) =
        Foo8 t
    instance SuppressUnusedWarnings Foo8Sym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo8Sym0KindInference) GHC.Tuple.())
    data Foo8Sym0 (l :: TyFun (Foo a0123456789876543210 b0123456789876543210) a0123456789876543210)
      = forall arg. SameKind (Apply Foo8Sym0 arg) (Foo8Sym1 arg) =>
        Foo8Sym0KindInference
    type instance Apply Foo8Sym0 l = Foo8 l
    type Foo7Sym2 (t :: a0123456789876543210) (t :: b0123456789876543210) =
        Foo7 t t
    instance SuppressUnusedWarnings Foo7Sym1 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo7Sym1KindInference) GHC.Tuple.())
    data Foo7Sym1 (l :: a0123456789876543210) (l :: TyFun b0123456789876543210 b0123456789876543210)
      = forall arg. SameKind (Apply (Foo7Sym1 l) arg) (Foo7Sym2 l arg) =>
        Foo7Sym1KindInference
    type instance Apply (Foo7Sym1 l) l = Foo7 l l
    instance SuppressUnusedWarnings Foo7Sym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo7Sym0KindInference) GHC.Tuple.())
    data Foo7Sym0 (l :: TyFun a0123456789876543210 (TyFun b0123456789876543210 b0123456789876543210
                                                    -> GHC.Types.Type))
      = forall arg. SameKind (Apply Foo7Sym0 arg) (Foo7Sym1 arg) =>
        Foo7Sym0KindInference
    type instance Apply Foo7Sym0 l = Foo7Sym1 l
    type Foo6Sym2 (t :: a0123456789876543210) (t :: b0123456789876543210) =
        Foo6 t t
    instance SuppressUnusedWarnings Foo6Sym1 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo6Sym1KindInference) GHC.Tuple.())
    data Foo6Sym1 (l :: a0123456789876543210) (l :: TyFun b0123456789876543210 a0123456789876543210)
      = forall arg. SameKind (Apply (Foo6Sym1 l) arg) (Foo6Sym2 l arg) =>
        Foo6Sym1KindInference
    type instance Apply (Foo6Sym1 l) l = Foo6 l l
    instance SuppressUnusedWarnings Foo6Sym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo6Sym0KindInference) GHC.Tuple.())
    data Foo6Sym0 (l :: TyFun a0123456789876543210 (TyFun b0123456789876543210 a0123456789876543210
                                                    -> GHC.Types.Type))
      = forall arg. SameKind (Apply Foo6Sym0 arg) (Foo6Sym1 arg) =>
        Foo6Sym0KindInference
    type instance Apply Foo6Sym0 l = Foo6Sym1 l
    type Foo5Sym2 (t :: a0123456789876543210) (t :: b0123456789876543210) =
        Foo5 t t
    instance SuppressUnusedWarnings Foo5Sym1 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo5Sym1KindInference) GHC.Tuple.())
    data Foo5Sym1 (l :: a0123456789876543210) (l :: TyFun b0123456789876543210 b0123456789876543210)
      = forall arg. SameKind (Apply (Foo5Sym1 l) arg) (Foo5Sym2 l arg) =>
        Foo5Sym1KindInference
    type instance Apply (Foo5Sym1 l) l = Foo5 l l
    instance SuppressUnusedWarnings Foo5Sym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo5Sym0KindInference) GHC.Tuple.())
    data Foo5Sym0 (l :: TyFun a0123456789876543210 (TyFun b0123456789876543210 b0123456789876543210
                                                    -> GHC.Types.Type))
      = forall arg. SameKind (Apply Foo5Sym0 arg) (Foo5Sym1 arg) =>
        Foo5Sym0KindInference
    type instance Apply Foo5Sym0 l = Foo5Sym1 l
    type Foo4Sym3 (t :: a0123456789876543210) (t :: b0123456789876543210) (t :: c0123456789876543210) =
        Foo4 t t t
    instance SuppressUnusedWarnings Foo4Sym2 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo4Sym2KindInference) GHC.Tuple.())
    data Foo4Sym2 (l :: a0123456789876543210) (l :: b0123456789876543210) (l :: TyFun c0123456789876543210 a0123456789876543210)
      = forall arg. SameKind (Apply (Foo4Sym2 l l) arg) (Foo4Sym3 l l arg) =>
        Foo4Sym2KindInference
    type instance Apply (Foo4Sym2 l l) l = Foo4 l l l
    instance SuppressUnusedWarnings Foo4Sym1 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo4Sym1KindInference) GHC.Tuple.())
    data Foo4Sym1 (l :: a0123456789876543210) (l :: TyFun b0123456789876543210 (TyFun c0123456789876543210 a0123456789876543210
                                                                                -> GHC.Types.Type))
      = forall arg. SameKind (Apply (Foo4Sym1 l) arg) (Foo4Sym2 l arg) =>
        Foo4Sym1KindInference
    type instance Apply (Foo4Sym1 l) l = Foo4Sym2 l l
    instance SuppressUnusedWarnings Foo4Sym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo4Sym0KindInference) GHC.Tuple.())
    data Foo4Sym0 (l :: TyFun a0123456789876543210 (TyFun b0123456789876543210 (TyFun c0123456789876543210 a0123456789876543210
                                                                                -> GHC.Types.Type)
                                                    -> GHC.Types.Type))
      = forall arg. SameKind (Apply Foo4Sym0 arg) (Foo4Sym1 arg) =>
        Foo4Sym0KindInference
    type instance Apply Foo4Sym0 l = Foo4Sym1 l
    type Foo3Sym1 (t :: a0123456789876543210) = Foo3 t
    instance SuppressUnusedWarnings Foo3Sym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo3Sym0KindInference) GHC.Tuple.())
    data Foo3Sym0 (l :: TyFun a0123456789876543210 a0123456789876543210)
      = forall arg. SameKind (Apply Foo3Sym0 arg) (Foo3Sym1 arg) =>
        Foo3Sym0KindInference
    type instance Apply Foo3Sym0 l = Foo3 l
    type Foo2Sym2 (t :: a0123456789876543210) (t :: b0123456789876543210) =
        Foo2 t t
    instance SuppressUnusedWarnings Foo2Sym1 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo2Sym1KindInference) GHC.Tuple.())
    data Foo2Sym1 (l :: a0123456789876543210) (l :: TyFun b0123456789876543210 a0123456789876543210)
      = forall arg. SameKind (Apply (Foo2Sym1 l) arg) (Foo2Sym2 l arg) =>
        Foo2Sym1KindInference
    type instance Apply (Foo2Sym1 l) l = Foo2 l l
    instance SuppressUnusedWarnings Foo2Sym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo2Sym0KindInference) GHC.Tuple.())
    data Foo2Sym0 (l :: TyFun a0123456789876543210 (TyFun b0123456789876543210 a0123456789876543210
                                                    -> GHC.Types.Type))
      = forall arg. SameKind (Apply Foo2Sym0 arg) (Foo2Sym1 arg) =>
        Foo2Sym0KindInference
    type instance Apply Foo2Sym0 l = Foo2Sym1 l
    type Foo1Sym2 (t :: a0123456789876543210) (t :: b0123456789876543210) =
        Foo1 t t
    instance SuppressUnusedWarnings Foo1Sym1 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo1Sym1KindInference) GHC.Tuple.())
    data Foo1Sym1 (l :: a0123456789876543210) (l :: TyFun b0123456789876543210 a0123456789876543210)
      = forall arg. SameKind (Apply (Foo1Sym1 l) arg) (Foo1Sym2 l arg) =>
        Foo1Sym1KindInference
    type instance Apply (Foo1Sym1 l) l = Foo1 l l
    instance SuppressUnusedWarnings Foo1Sym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo1Sym0KindInference) GHC.Tuple.())
    data Foo1Sym0 (l :: TyFun a0123456789876543210 (TyFun b0123456789876543210 a0123456789876543210
                                                    -> GHC.Types.Type))
      = forall arg. SameKind (Apply Foo1Sym0 arg) (Foo1Sym1 arg) =>
        Foo1Sym0KindInference
    type instance Apply Foo1Sym0 l = Foo1Sym1 l
    type Foo0Sym2 (t :: a0123456789876543210) (t :: b0123456789876543210) =
        Foo0 t t
    instance SuppressUnusedWarnings Foo0Sym1 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo0Sym1KindInference) GHC.Tuple.())
    data Foo0Sym1 (l :: a0123456789876543210) (l :: TyFun b0123456789876543210 a0123456789876543210)
      = forall arg. SameKind (Apply (Foo0Sym1 l) arg) (Foo0Sym2 l arg) =>
        Foo0Sym1KindInference
    type instance Apply (Foo0Sym1 l) l = Foo0 l l
    instance SuppressUnusedWarnings Foo0Sym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) Foo0Sym0KindInference) GHC.Tuple.())
    data Foo0Sym0 (l :: TyFun a0123456789876543210 (TyFun b0123456789876543210 a0123456789876543210
                                                    -> GHC.Types.Type))
      = forall arg. SameKind (Apply Foo0Sym0 arg) (Foo0Sym1 arg) =>
        Foo0Sym0KindInference
    type instance Apply Foo0Sym0 l = Foo0Sym1 l
    type family Foo8 (a :: Foo a b) :: a where
      Foo8 x = Apply (Apply Lambda_0123456789876543210Sym0 x) x
    type family Foo7 (a :: a) (a :: b) :: b where
      Foo7 x y = Apply (Apply (Apply Lambda_0123456789876543210Sym0 x) y) (Apply (Apply Tuple2Sym0 x) y)
    type family Foo6 (a :: a) (a :: b) :: a where
      Foo6 a b = Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 a) b) a) b
    type family Foo5 (a :: a) (a :: b) :: b where
      Foo5 x y = Apply (Apply (Apply Lambda_0123456789876543210Sym0 x) y) y
    type family Foo4 (a :: a) (a :: b) (a :: c) :: a where
      Foo4 x y z = Apply (Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 x) y) z) y) z
    type family Foo3 (a :: a) :: a where
      Foo3 x = Apply (Apply Lambda_0123456789876543210Sym0 x) x
    type family Foo2 (a :: a) (a :: b) :: a where
      Foo2 x y = Apply (Apply (Apply Lambda_0123456789876543210Sym0 x) y) y
    type family Foo1 (a :: a) (a :: b) :: a where
      Foo1 x a_0123456789876543210 = Apply (Apply (Apply Lambda_0123456789876543210Sym0 x) a_0123456789876543210) a_0123456789876543210
    type family Foo0 (a :: a) (a :: b) :: a where
      Foo0 a_0123456789876543210 a_0123456789876543210 = Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 a_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210
    sFoo8 ::
      forall (t :: Foo a b). Sing t -> Sing (Apply Foo8Sym0 t :: a)
    sFoo7 ::
      forall (t :: a) (t :: b).
      Sing t -> Sing t -> Sing (Apply (Apply Foo7Sym0 t) t :: b)
    sFoo6 ::
      forall (t :: a) (t :: b).
      Sing t -> Sing t -> Sing (Apply (Apply Foo6Sym0 t) t :: a)
    sFoo5 ::
      forall (t :: a) (t :: b).
      Sing t -> Sing t -> Sing (Apply (Apply Foo5Sym0 t) t :: b)
    sFoo4 ::
      forall (t :: a) (t :: b) (t :: c).
      Sing t
      -> Sing t
         -> Sing t -> Sing (Apply (Apply (Apply Foo4Sym0 t) t) t :: a)
    sFoo3 :: forall (t :: a). Sing t -> Sing (Apply Foo3Sym0 t :: a)
    sFoo2 ::
      forall (t :: a) (t :: b).
      Sing t -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a)
    sFoo1 ::
      forall (t :: a) (t :: b).
      Sing t -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a)
    sFoo0 ::
      forall (t :: a) (t :: b).
      Sing t -> Sing t -> Sing (Apply (Apply Foo0Sym0 t) t :: a)
    sFoo8 (sX :: Sing x)
      = (applySing
           ((singFun1 @(Apply Lambda_0123456789876543210Sym0 x))
              (\ sArg_0123456789876543210
                 -> case sArg_0123456789876543210 of {
                      _ :: Sing arg_0123456789876543210
                        -> case sArg_0123456789876543210 of {
                             SFoo (sA :: Sing a) _ -> sA } ::
                             Sing (Case_0123456789876543210 x arg_0123456789876543210 arg_0123456789876543210) })))
          sX
    sFoo7 (sX :: Sing x) (sY :: Sing y)
      = (applySing
           ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 x) y))
              (\ sArg_0123456789876543210
                 -> case sArg_0123456789876543210 of {
                      _ :: Sing arg_0123456789876543210
                        -> case sArg_0123456789876543210 of {
                             STuple2 _ (sB :: Sing b) -> sB } ::
                             Sing (Case_0123456789876543210 x y arg_0123456789876543210 arg_0123456789876543210) })))
          ((applySing ((applySing ((singFun2 @Tuple2Sym0) STuple2)) sX)) sY)
    sFoo6 (sA :: Sing a) (sB :: Sing b)
      = (applySing
           ((applySing
               ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 a) b))
                  (\ sX
                     -> case sX of {
                          _ :: Sing x
                            -> (singFun1
                                  @(Apply (Apply (Apply Lambda_0123456789876543210Sym0 a) b) x))
                                 (\ sArg_0123456789876543210
                                    -> case sArg_0123456789876543210 of {
                                         _ :: Sing arg_0123456789876543210
                                           -> case sArg_0123456789876543210 of { _ -> sX } ::
                                                Sing (Case_0123456789876543210 a b x arg_0123456789876543210 arg_0123456789876543210) }) })))
              sA))
          sB
    sFoo5 (sX :: Sing x) (sY :: Sing y)
      = (applySing
           ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 x) y))
              (\ sX -> case sX of { _ :: Sing x -> sX })))
          sY
    sFoo4 (sX :: Sing x) (sY :: Sing y) (sZ :: Sing z)
      = (applySing
           ((applySing
               ((singFun2
                   @(Apply (Apply (Apply Lambda_0123456789876543210Sym0 x) y) z))
                  (\ sArg_0123456789876543210 sArg_0123456789876543210
                     -> case
                            (GHC.Tuple.(,) sArg_0123456789876543210) sArg_0123456789876543210
                        of {
                          GHC.Tuple.(,) (_ :: Sing arg_0123456789876543210)
                                        (_ :: Sing arg_0123456789876543210)
                            -> case
                                   (applySing
                                      ((applySing ((singFun2 @Tuple2Sym0) STuple2))
                                         sArg_0123456789876543210))
                                     sArg_0123456789876543210
                               of {
                                 STuple2 _ _ -> sX } ::
                                 Sing (Case_0123456789876543210 x y z arg_0123456789876543210 arg_0123456789876543210 (Apply (Apply Tuple2Sym0 arg_0123456789876543210) arg_0123456789876543210)) })))
              sY))
          sZ
    sFoo3 (sX :: Sing x)
      = (applySing
           ((singFun1 @(Apply Lambda_0123456789876543210Sym0 x))
              (\ sY -> case sY of { _ :: Sing y -> sY })))
          sX
    sFoo2 (sX :: Sing x) (sY :: Sing y)
      = (applySing
           ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 x) y))
              (\ sArg_0123456789876543210
                 -> case sArg_0123456789876543210 of {
                      _ :: Sing arg_0123456789876543210
                        -> case sArg_0123456789876543210 of { _ -> sX } ::
                             Sing (Case_0123456789876543210 x y arg_0123456789876543210 arg_0123456789876543210) })))
          sY
    sFoo1
      (sX :: Sing x)
      (sA_0123456789876543210 :: Sing a_0123456789876543210)
      = (applySing
           ((singFun1
               @(Apply (Apply Lambda_0123456789876543210Sym0 x) a_0123456789876543210))
              (\ sArg_0123456789876543210
                 -> case sArg_0123456789876543210 of {
                      _ :: Sing arg_0123456789876543210
                        -> case sArg_0123456789876543210 of { _ -> sX } ::
                             Sing (Case_0123456789876543210 x arg_0123456789876543210 a_0123456789876543210 arg_0123456789876543210) })))
          sA_0123456789876543210
    sFoo0
      (sA_0123456789876543210 :: Sing a_0123456789876543210)
      (sA_0123456789876543210 :: Sing a_0123456789876543210)
      = (applySing
           ((applySing
               ((singFun2
                   @(Apply (Apply Lambda_0123456789876543210Sym0 a_0123456789876543210) a_0123456789876543210))
                  (\ sX sY
                     -> case (GHC.Tuple.(,) sX) sY of {
                          GHC.Tuple.(,) (_ :: Sing x) (_ :: Sing y) -> sX })))
              sA_0123456789876543210))
          sA_0123456789876543210
    data instance Sing (z :: Foo a b)
      = forall (n :: a) (n :: b). z ~ Foo n n =>
        SFoo (Sing (n :: a)) (Sing (n :: b))
    type SFoo = (Sing :: Foo a b -> GHC.Types.Type)
    instance (SingKind a, SingKind b) => SingKind (Foo a b) where
      type Demote (Foo a b) = Foo (Demote a) (Demote b)
      fromSing (SFoo b b) = (Foo (fromSing b)) (fromSing b)
      toSing (Foo b b)
        = case
              (GHC.Tuple.(,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b)
          of {
            GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing ((SFoo c) c) }
    instance (SingI n, SingI n) => SingI (Foo (n :: a) (n :: b)) where
      sing = (SFoo sing) sing