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