Singletons/T29.hs:(0,0)-(0,0): Splicing declarations singletons [d| foo :: Bool -> Bool foo x = not $ x bar :: Bool -> Bool bar x = not . not . not $ x baz :: Bool -> Bool baz x = not $! x ban :: Bool -> Bool ban x = not . not . not $! x |] ======> foo :: Bool -> Bool foo x = (not $ x) bar :: Bool -> Bool bar x = ((not . (not . not)) $ x) baz :: Bool -> Bool baz x = (not $! x) ban :: Bool -> Bool ban x = ((not . (not . not)) $! x) type BanSym1 (a0123456789876543210 :: Bool) = Ban a0123456789876543210 instance SuppressUnusedWarnings BanSym0 where suppressUnusedWarnings = snd (((,) BanSym0KindInference) ()) data BanSym0 :: (~>) Bool Bool where BanSym0KindInference :: forall a0123456789876543210 arg. SameKind (Apply BanSym0 arg) (BanSym1 arg) => BanSym0 a0123456789876543210 type instance Apply BanSym0 a0123456789876543210 = Ban a0123456789876543210 type BazSym1 (a0123456789876543210 :: Bool) = Baz a0123456789876543210 instance SuppressUnusedWarnings BazSym0 where suppressUnusedWarnings = snd (((,) BazSym0KindInference) ()) data BazSym0 :: (~>) Bool Bool where BazSym0KindInference :: forall a0123456789876543210 arg. SameKind (Apply BazSym0 arg) (BazSym1 arg) => BazSym0 a0123456789876543210 type instance Apply BazSym0 a0123456789876543210 = Baz a0123456789876543210 type BarSym1 (a0123456789876543210 :: Bool) = Bar a0123456789876543210 instance SuppressUnusedWarnings BarSym0 where suppressUnusedWarnings = snd (((,) BarSym0KindInference) ()) data BarSym0 :: (~>) Bool Bool where BarSym0KindInference :: forall a0123456789876543210 arg. SameKind (Apply BarSym0 arg) (BarSym1 arg) => BarSym0 a0123456789876543210 type instance Apply BarSym0 a0123456789876543210 = Bar a0123456789876543210 type FooSym1 (a0123456789876543210 :: Bool) = Foo a0123456789876543210 instance SuppressUnusedWarnings FooSym0 where suppressUnusedWarnings = snd (((,) FooSym0KindInference) ()) data FooSym0 :: (~>) Bool Bool where FooSym0KindInference :: forall a0123456789876543210 arg. SameKind (Apply FooSym0 arg) (FooSym1 arg) => FooSym0 a0123456789876543210 type instance Apply FooSym0 a0123456789876543210 = Foo a0123456789876543210 type family Ban (a :: Bool) :: Bool where Ban x = Apply (Apply ($!@#@$) (Apply (Apply (.@#@$) NotSym0) (Apply (Apply (.@#@$) NotSym0) NotSym0))) x type family Baz (a :: Bool) :: Bool where Baz x = Apply (Apply ($!@#@$) NotSym0) x type family Bar (a :: Bool) :: Bool where Bar x = Apply (Apply ($@#@$) (Apply (Apply (.@#@$) NotSym0) (Apply (Apply (.@#@$) NotSym0) NotSym0))) x type family Foo (a :: Bool) :: Bool where Foo x = Apply (Apply ($@#@$) NotSym0) x sBan :: forall (t :: Bool). Sing t -> Sing (Apply BanSym0 t :: Bool) sBaz :: forall (t :: Bool). Sing t -> Sing (Apply BazSym0 t :: Bool) sBar :: forall (t :: Bool). Sing t -> Sing (Apply BarSym0 t :: Bool) sFoo :: forall (t :: Bool). Sing t -> Sing (Apply FooSym0 t :: Bool) sBan (sX :: Sing x) = (applySing ((applySing ((singFun2 @($!@#@$)) (%$!))) ((applySing ((applySing ((singFun3 @(.@#@$)) (%.))) ((singFun1 @NotSym0) sNot))) ((applySing ((applySing ((singFun3 @(.@#@$)) (%.))) ((singFun1 @NotSym0) sNot))) ((singFun1 @NotSym0) sNot))))) sX sBaz (sX :: Sing x) = (applySing ((applySing ((singFun2 @($!@#@$)) (%$!))) ((singFun1 @NotSym0) sNot))) sX sBar (sX :: Sing x) = (applySing ((applySing ((singFun2 @($@#@$)) (%$))) ((applySing ((applySing ((singFun3 @(.@#@$)) (%.))) ((singFun1 @NotSym0) sNot))) ((applySing ((applySing ((singFun3 @(.@#@$)) (%.))) ((singFun1 @NotSym0) sNot))) ((singFun1 @NotSym0) sNot))))) sX sFoo (sX :: Sing x) = (applySing ((applySing ((singFun2 @($@#@$)) (%$))) ((singFun1 @NotSym0) sNot))) sX instance SingI (BanSym0 :: (~>) Bool Bool) where sing = (singFun1 @BanSym0) sBan instance SingI (BazSym0 :: (~>) Bool Bool) where sing = (singFun1 @BazSym0) sBaz instance SingI (BarSym0 :: (~>) Bool Bool) where sing = (singFun1 @BarSym0) sBar instance SingI (FooSym0 :: (~>) Bool Bool) where sing = (singFun1 @FooSym0) sFoo