singletons-base-3.5: tests/compile-and-dump/Singletons/T29.golden
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 @Bool @Bool 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 @Bool @Bool 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 @Bool @Bool 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 @Bool @Bool 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 (Ban t :: Bool) :: Type)
sBaz ::
(forall (t :: Bool). Sing t -> Sing (Baz t :: Bool) :: Type)
sBar ::
(forall (t :: Bool). Sing t -> Sing (Bar t :: Bool) :: Type)
sFoo ::
(forall (t :: Bool). Sing t -> Sing (Foo 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