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 BanSym0 :: (~>) Bool Bool data BanSym0 :: (~>) Bool Bool where BanSym0KindInference :: SameKind (Apply BanSym0 arg) (BanSym1 arg) => BanSym0 a0123456789876543210 type instance Apply BanSym0 a0123456789876543210 = Ban a0123456789876543210 instance SuppressUnusedWarnings BanSym0 where suppressUnusedWarnings = snd ((,) BanSym0KindInference ()) type BanSym1 :: Bool -> Bool type family BanSym1 (a0123456789876543210 :: Bool) :: Bool where BanSym1 a0123456789876543210 = Ban a0123456789876543210 type BazSym0 :: (~>) Bool Bool data BazSym0 :: (~>) Bool Bool where BazSym0KindInference :: SameKind (Apply BazSym0 arg) (BazSym1 arg) => BazSym0 a0123456789876543210 type instance Apply BazSym0 a0123456789876543210 = Baz a0123456789876543210 instance SuppressUnusedWarnings BazSym0 where suppressUnusedWarnings = snd ((,) BazSym0KindInference ()) type BazSym1 :: Bool -> Bool type family BazSym1 (a0123456789876543210 :: Bool) :: Bool where BazSym1 a0123456789876543210 = Baz a0123456789876543210 type BarSym0 :: (~>) Bool Bool data BarSym0 :: (~>) Bool Bool where BarSym0KindInference :: SameKind (Apply BarSym0 arg) (BarSym1 arg) => BarSym0 a0123456789876543210 type instance Apply BarSym0 a0123456789876543210 = Bar a0123456789876543210 instance SuppressUnusedWarnings BarSym0 where suppressUnusedWarnings = snd ((,) BarSym0KindInference ()) type BarSym1 :: Bool -> Bool type family BarSym1 (a0123456789876543210 :: Bool) :: Bool where BarSym1 a0123456789876543210 = Bar a0123456789876543210 type FooSym0 :: (~>) Bool Bool data FooSym0 :: (~>) Bool Bool where FooSym0KindInference :: SameKind (Apply FooSym0 arg) (FooSym1 arg) => FooSym0 a0123456789876543210 type instance Apply FooSym0 a0123456789876543210 = Foo a0123456789876543210 instance SuppressUnusedWarnings FooSym0 where suppressUnusedWarnings = snd ((,) FooSym0KindInference ()) type FooSym1 :: Bool -> Bool type family FooSym1 (a0123456789876543210 :: Bool) :: Bool where FooSym1 a0123456789876543210 = Foo a0123456789876543210 type Ban :: Bool -> Bool type family Ban (a :: Bool) :: Bool where Ban x = Apply (Apply ($!@#@$) (Apply (Apply (.@#@$) NotSym0) (Apply (Apply (.@#@$) NotSym0) NotSym0))) x type Baz :: Bool -> Bool type family Baz (a :: Bool) :: Bool where Baz x = Apply (Apply ($!@#@$) NotSym0) x type Bar :: Bool -> Bool type family Bar (a :: Bool) :: Bool where Bar x = Apply (Apply ($@#@$) (Apply (Apply (.@#@$) NotSym0) (Apply (Apply (.@#@$) NotSym0) NotSym0))) x type Foo :: Bool -> Bool type family Foo (a :: Bool) :: Bool where Foo x = Apply (Apply ($@#@$) NotSym0) x sBan :: (forall (t :: Bool). Sing t -> Sing (Apply BanSym0 t :: Bool) :: Type) sBaz :: (forall (t :: Bool). Sing t -> Sing (Apply BazSym0 t :: Bool) :: Type) sBar :: (forall (t :: Bool). Sing t -> Sing (Apply BarSym0 t :: Bool) :: Type) sFoo :: (forall (t :: Bool). Sing t -> Sing (Apply FooSym0 t :: Bool) :: Type) 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