packages feed

singletons-2.6: tests/compile-and-dump/Singletons/T145.ghc88.template

Singletons/T145.hs:(0,0)-(0,0): Splicing declarations
    singletons
      [d| class Column (f :: Type -> Type) where
            col :: f a -> a -> Bool |]
  ======>
    class Column (f :: Type -> Type) where
      col :: f a -> a -> Bool
    type ColSym2 (arg0123456789876543210 :: f0123456789876543210 a0123456789876543210) (arg0123456789876543210 :: a0123456789876543210) =
        Col arg0123456789876543210 arg0123456789876543210
    instance SuppressUnusedWarnings (ColSym1 arg0123456789876543210) where
      suppressUnusedWarnings = snd (((,) ColSym1KindInference) ())
    data ColSym1 (arg0123456789876543210 :: f0123456789876543210 a0123456789876543210) :: (~>) a0123456789876543210 Bool
      where
        ColSym1KindInference :: forall arg0123456789876543210
                                       arg0123456789876543210
                                       arg. SameKind (Apply (ColSym1 arg0123456789876543210) arg) (ColSym2 arg0123456789876543210 arg) =>
                                ColSym1 arg0123456789876543210 arg0123456789876543210
    type instance Apply (ColSym1 arg0123456789876543210) arg0123456789876543210 = Col arg0123456789876543210 arg0123456789876543210
    instance SuppressUnusedWarnings ColSym0 where
      suppressUnusedWarnings = snd (((,) ColSym0KindInference) ())
    data ColSym0 :: forall f0123456789876543210 a0123456789876543210.
                    (~>) (f0123456789876543210 a0123456789876543210) ((~>) a0123456789876543210 Bool)
      where
        ColSym0KindInference :: forall arg0123456789876543210
                                       arg. SameKind (Apply ColSym0 arg) (ColSym1 arg) =>
                                ColSym0 arg0123456789876543210
    type instance Apply ColSym0 arg0123456789876543210 = ColSym1 arg0123456789876543210
    class PColumn (f :: Type -> Type) where
      type Col (arg :: f a) (arg :: a) :: Bool
    class SColumn (f :: Type -> Type) where
      sCol ::
        forall a (t :: f a) (t :: a).
        Sing t -> Sing t -> Sing (Apply (Apply ColSym0 t) t :: Bool)
    instance SColumn f =>
             SingI (ColSym0 :: (~>) (f a) ((~>) a Bool)) where
      sing = (singFun2 @ColSym0) sCol
    instance (SColumn f, SingI d) =>
             SingI (ColSym1 (d :: f a) :: (~>) a Bool) where
      sing = (singFun1 @(ColSym1 (d :: f a))) (sCol (sing @d))