packages feed

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