packages feed

singletons-base-3.5: tests/compile-and-dump/Singletons/T287.golden

Singletons/T287.hs:(0,0)-(0,0): Splicing declarations
    singletons
      [d| class S a where
            (<<>>) :: a -> a -> a
          
          instance S b => S (a -> b) where
            f <<>> g = \ x -> f x <<>> g x |]
  ======>
    class S a where
      (<<>>) :: a -> a -> a
    instance S b => S (a -> b) where
      (<<>>) f g = \ x -> (f x <<>> g x)
    type (<<>>@#@$) :: forall a. (~>) a ((~>) a a)
    data (<<>>@#@$) :: (~>) a ((~>) a a)
      where
        (:<<>>@#@$###) :: SameKind (Apply (<<>>@#@$) arg) ((<<>>@#@$$) arg) =>
                          (<<>>@#@$) a0123456789876543210
    type instance Apply @a @((~>) a a) (<<>>@#@$) a0123456789876543210 = (<<>>@#@$$) a0123456789876543210
    instance SuppressUnusedWarnings (<<>>@#@$) where
      suppressUnusedWarnings = snd ((,) (:<<>>@#@$###) ())
    type (<<>>@#@$$) :: forall a. a -> (~>) a a
    data (<<>>@#@$$) (a0123456789876543210 :: a) :: (~>) a a
      where
        (:<<>>@#@$$###) :: SameKind (Apply ((<<>>@#@$$) a0123456789876543210) arg) ((<<>>@#@$$$) a0123456789876543210 arg) =>
                           (<<>>@#@$$) a0123456789876543210 a0123456789876543210
    type instance Apply @a @a ((<<>>@#@$$) a0123456789876543210) a0123456789876543210 = (<<>>) a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings ((<<>>@#@$$) a0123456789876543210) where
      suppressUnusedWarnings = snd ((,) (:<<>>@#@$$###) ())
    type (<<>>@#@$$$) :: forall a. a -> a -> a
    type family (<<>>@#@$$$) @a (a0123456789876543210 :: a) (a0123456789876543210 :: a) :: a where
      (<<>>@#@$$$) a0123456789876543210 a0123456789876543210 = (<<>>) a0123456789876543210 a0123456789876543210
    class PS a where
      type family (<<>>) (arg :: a) (arg :: a) :: a
    type family LamCases_0123456789876543210 a0123456789876543210 b0123456789876543210 (f0123456789876543210 :: (~>) a0123456789876543210 b0123456789876543210) (g0123456789876543210 :: (~>) a0123456789876543210 b0123456789876543210) a_0123456789876543210 where
      LamCases_0123456789876543210 a b f g x = Apply (Apply (<<>>@#@$) (Apply f x)) (Apply g x)
    data LamCases_0123456789876543210Sym0 a0123456789876543210 b0123456789876543210 (f0123456789876543210 :: (~>) a0123456789876543210 b0123456789876543210) (g0123456789876543210 :: (~>) a0123456789876543210 b0123456789876543210) a_01234567898765432100123456789876543210
      where
        LamCases_0123456789876543210Sym0KindInference :: SameKind (Apply (LamCases_0123456789876543210Sym0 a0123456789876543210 b0123456789876543210 f0123456789876543210 g0123456789876543210) arg) (LamCases_0123456789876543210Sym1 a0123456789876543210 b0123456789876543210 f0123456789876543210 g0123456789876543210 arg) =>
                                                         LamCases_0123456789876543210Sym0 a0123456789876543210 b0123456789876543210 f0123456789876543210 g0123456789876543210 a_01234567898765432100123456789876543210
    type instance Apply @_ @_ (LamCases_0123456789876543210Sym0 a0123456789876543210 b0123456789876543210 f0123456789876543210 g0123456789876543210) a_01234567898765432100123456789876543210 = LamCases_0123456789876543210 a0123456789876543210 b0123456789876543210 f0123456789876543210 g0123456789876543210 a_01234567898765432100123456789876543210
    instance SuppressUnusedWarnings (LamCases_0123456789876543210Sym0 a0123456789876543210 b0123456789876543210 f0123456789876543210 g0123456789876543210) where
      suppressUnusedWarnings
        = snd ((,) LamCases_0123456789876543210Sym0KindInference ())
    type family LamCases_0123456789876543210Sym1 a0123456789876543210 b0123456789876543210 (f0123456789876543210 :: (~>) a0123456789876543210 b0123456789876543210) (g0123456789876543210 :: (~>) a0123456789876543210 b0123456789876543210) a_01234567898765432100123456789876543210 where
      LamCases_0123456789876543210Sym1 a0123456789876543210 b0123456789876543210 f0123456789876543210 g0123456789876543210 a_01234567898765432100123456789876543210 = LamCases_0123456789876543210 a0123456789876543210 b0123456789876543210 f0123456789876543210 g0123456789876543210 a_01234567898765432100123456789876543210
    type TFHelper_0123456789876543210 :: forall a b. (~>) a b
                                                     -> (~>) a b -> (~>) a b
    type family TFHelper_0123456789876543210 @a @b (a :: (~>) a b) (a :: (~>) a b) :: (~>) a b where
      TFHelper_0123456789876543210 @a @b (f :: (~>) a b) (g :: (~>) a b) = LamCases_0123456789876543210Sym0 a b f g
    instance PS ((~>) a b) where
      type (<<>>) a a = TFHelper_0123456789876543210 a a
    class SS a where
      (%<<>>) ::
        (forall (t :: a) (t :: a).
         Sing t -> Sing t -> Sing ((<<>>) t t :: a) :: Type)
    instance SS b => SS ((~>) a b) where
      (%<<>>) (sF :: Sing f) (sG :: Sing g)
        = singFun1
            @(LamCases_0123456789876543210Sym0 a b f g)
            (\cases
               (sX :: Sing x)
                 -> applySing
                      (applySing (singFun2 @(<<>>@#@$) (%<<>>)) (applySing sF sX))
                      (applySing sG sX))
    instance SS a => SingI ((<<>>@#@$) :: (~>) a ((~>) a a)) where
      sing = singFun2 @(<<>>@#@$) (%<<>>)
    instance (SS a, SingI d) =>
             SingI ((<<>>@#@$$) (d :: a) :: (~>) a a) where
      sing = singFun1 @((<<>>@#@$$) (d :: a)) ((%<<>>) (sing @d))
    instance SS a => SingI1 ((<<>>@#@$$) :: a -> (~>) a a) where
      liftSing (s :: Sing (d :: a))
        = singFun1 @((<<>>@#@$$) (d :: a)) ((%<<>>) s)