packages feed

singletons-1.0: tests/compile-and-dump/Singletons/Lambdas.ghc76.template

Promote/Lambdas.hs:0:0: Splicing declarations
    promote
      [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 |]
  ======>
    Promote/Lambdas.hs:(0,0)-(0,0)
    foo0 :: forall a b. a -> b -> a
    foo0 = \ x y -> x
    foo1 :: forall a b. a -> b -> a
    foo1 x = \ _ -> x
    foo2 :: forall a b. a -> b -> a
    foo2 x y = \ _ -> x y
    foo3 :: forall a. a -> a
    foo3 x = \ y -> y x
    foo4 :: forall a b c. a -> b -> c -> a
    foo4 x y z = \ _ _ -> x y z
    foo5 :: forall a b. a -> b -> b
    foo5 x y = \ x -> x y
    foo6 :: forall a b. a -> b -> a
    foo6 a b = \ x -> \ _ -> x a b
    foo7 :: forall a b. a -> b -> b
    foo7 x y = \ (_, b) -> b (x, y)
    data Foo a b = Foo a b
    foo8 :: forall a b. Foo a b -> a
    foo8 x = \ (Foo a _) -> a x
    type Foo0 = Lambda_0123456789Sym0
    type Foo0Sym0 = Foo0
    type family Lambda_0123456789 (t :: k) (t :: k) :: r
    type instance Lambda_0123456789 x y = x
    data Lambda_0123456789Sym1 (l :: k) (l :: TyFun k r)
    data Lambda_0123456789Sym0 (k :: TyFun k (TyFun k r -> *))
    type instance Apply (Lambda_0123456789Sym1 a) a =
        Lambda_0123456789 a a
    type instance Apply Lambda_0123456789Sym0 a =
        Lambda_0123456789Sym1 a
    type family Lambda_0123456789 (x :: x) (t :: k) :: r
    type instance Lambda_0123456789 x z = x
    data Lambda_0123456789Sym1 (l :: x) (l :: TyFun k r)
    type instance Apply (Lambda_0123456789Sym1 a) a =
        Lambda_0123456789 a a
    type family Lambda_0123456789 (x :: x) (y :: y) (t :: k) :: r
    type instance Lambda_0123456789 x y z = x
    data Lambda_0123456789Sym2 (l :: x) (l :: y) (l :: TyFun k r)
    type instance Apply (Lambda_0123456789Sym2 a a) a =
        Lambda_0123456789 a a a
    type family Lambda_0123456789 (x :: x) (t :: k) :: r
    type instance Lambda_0123456789 x y = y
    data Lambda_0123456789Sym1 (l :: x) (l :: TyFun k r)
    type instance Apply (Lambda_0123456789Sym1 a) a =
        Lambda_0123456789 a a
    type family Lambda_0123456789 (x :: x)
                                  (y :: y)
                                  (z :: z)
                                  (t :: k)
                                  (t :: k) :: r
    type instance Lambda_0123456789 x y z z z = x
    data Lambda_0123456789Sym4 (l :: x)
                               (l :: y)
                               (l :: z)
                               (l :: k)
                               (l :: TyFun k r)
    data Lambda_0123456789Sym3 (l :: x)
                               (l :: y)
                               (l :: z)
                               (l :: TyFun k (TyFun k r -> *))
    type instance Apply (Lambda_0123456789Sym4 a a a a) a =
        Lambda_0123456789 a a a a a
    type instance Apply (Lambda_0123456789Sym3 a a a) a =
        Lambda_0123456789Sym4 a a a a
    type family Lambda_0123456789 (x :: x) (y :: y) (t :: k) :: r
    type instance Lambda_0123456789 x y x = x
    data Lambda_0123456789Sym2 (l :: x) (l :: y) (l :: TyFun k r)
    type instance Apply (Lambda_0123456789Sym2 a a) a =
        Lambda_0123456789 a a a
    type family Lambda_0123456789 (a :: a)
                                  (b :: b)
                                  (x :: x)
                                  (t :: k) :: r
    type instance Lambda_0123456789 a b x z = x
    data Lambda_0123456789Sym3 (l :: a)
                               (l :: b)
                               (l :: x)
                               (l :: TyFun k r)
    type instance Apply (Lambda_0123456789Sym3 a a a) a =
        Lambda_0123456789 a a a a
    type family Lambda_0123456789 (a :: a) (b :: b) (t :: k) :: r
    type instance Lambda_0123456789 a b x = Lambda_0123456789Sym3 a b x
    data Lambda_0123456789Sym2 (l :: a) (l :: b) (l :: TyFun k r)
    type instance Apply (Lambda_0123456789Sym2 a a) a =
        Lambda_0123456789 a a a
    type family Lambda_0123456789 (x :: x) (y :: y) (t :: k) :: r
    type instance Lambda_0123456789 x y '(z, b) = b
    data Lambda_0123456789Sym2 (l :: x) (l :: y) (l :: TyFun k r)
    type instance Apply (Lambda_0123456789Sym2 a a) a =
        Lambda_0123456789 a a a
    type FooTyCtor = Foo
    data FooTyCtorSym1 (l :: *) (l :: TyFun * *)
    data FooTyCtorSym0 (k :: TyFun * (TyFun * * -> *))
    type instance Apply (FooTyCtorSym1 a) a = FooTyCtor a a
    type instance Apply FooTyCtorSym0 a = FooTyCtorSym1 a
    data FooSym1 (l :: a) (l :: TyFun b (Foo a b))
    data FooSym0 (k :: TyFun a (TyFun b (Foo a b) -> *))
    type instance Apply (FooSym1 a) a = Foo a a
    type instance Apply FooSym0 a = FooSym1 a
    type family Lambda_0123456789 (x :: x) (t :: k) :: r
    type instance Lambda_0123456789 x (Foo a z) = a
    data Lambda_0123456789Sym1 (l :: x) (l :: TyFun k r)
    type instance Apply (Lambda_0123456789Sym1 a) a =
        Lambda_0123456789 a a
    type family Foo1 (a :: a) :: TyFun a b -> *
    type instance Foo1 x = Lambda_0123456789Sym1 x
    data Foo1Sym0 (k :: TyFun a (TyFun a b -> *))
    type instance Apply Foo1Sym0 a = Foo1 a
    type family Foo2 (a :: a) (a :: b) :: a
    type instance Foo2 x y = Apply (Lambda_0123456789Sym2 x y) y
    data Foo2Sym1 (l :: a) (l :: TyFun b a)
    data Foo2Sym0 (k :: TyFun a (TyFun b a -> *))
    type instance Apply (Foo2Sym1 a) a = Foo2 a a
    type instance Apply Foo2Sym0 a = Foo2Sym1 a
    type family Foo3 (a :: a) :: a
    type instance Foo3 x = Apply (Lambda_0123456789Sym1 x) x
    data Foo3Sym0 (k :: TyFun a a)
    type instance Apply Foo3Sym0 a = Foo3 a
    type family Foo4 (a :: a) (a :: b) (a :: c) :: a
    type instance Foo4 x y z =
        Apply (Apply (Lambda_0123456789Sym3 x y z) y) z
    data Foo4Sym2 (l :: a) (l :: b) (l :: TyFun c a)
    data Foo4Sym1 (l :: a) (l :: TyFun b (TyFun c a -> *))
    data Foo4Sym0 (k :: TyFun a (TyFun b (TyFun c a -> *) -> *))
    type instance Apply (Foo4Sym2 a a) a = Foo4 a a a
    type instance Apply (Foo4Sym1 a) a = Foo4Sym2 a a
    type instance Apply Foo4Sym0 a = Foo4Sym1 a
    type family Foo5 (a :: a) (a :: b) :: b
    type instance Foo5 x y = Apply (Lambda_0123456789Sym2 x y) y
    data Foo5Sym1 (l :: a) (l :: TyFun b b)
    data Foo5Sym0 (k :: TyFun a (TyFun b b -> *))
    type instance Apply (Foo5Sym1 a) a = Foo5 a a
    type instance Apply Foo5Sym0 a = Foo5Sym1 a
    type family Foo6 (a :: a) (a :: b) :: a
    type instance Foo6 a b =
        Apply (Apply (Lambda_0123456789Sym2 a b) a) b
    data Foo6Sym1 (l :: a) (l :: TyFun b a)
    data Foo6Sym0 (k :: TyFun a (TyFun b a -> *))
    type instance Apply (Foo6Sym1 a) a = Foo6 a a
    type instance Apply Foo6Sym0 a = Foo6Sym1 a
    type family Foo7 (a :: a) (a :: b) :: b
    type instance Foo7 x y = Apply (Lambda_0123456789Sym2 x y) '(x, y)
    data Foo7Sym1 (l :: a) (l :: TyFun b b)
    data Foo7Sym0 (k :: TyFun a (TyFun b b -> *))
    type instance Apply (Foo7Sym1 a) a = Foo7 a a
    type instance Apply Foo7Sym0 a = Foo7Sym1 a
    type family Foo8 (a :: Foo a b) :: a
    type instance Foo8 x = Apply (Lambda_0123456789Sym1 x) x
    data Foo8Sym0 (k :: TyFun (Foo a b) a)
    type instance Apply Foo8Sym0 a = Foo8 a