packages feed

singletons-2.3: tests/compile-and-dump/Singletons/Contains.ghc82.template

Singletons/Contains.hs:(0,0)-(0,0): Splicing declarations
    singletons
      [d| contains :: Eq a => a -> [a] -> Bool
          contains _ [] = False
          contains elt (h : t) = (elt == h) || (contains elt t) |]
  ======>
    contains :: Eq a => a -> [a] -> Bool
    contains _ GHC.Types.[] = False
    contains elt (h GHC.Types.: t) = ((elt == h) || ((contains elt) t))
    type ContainsSym2 (t :: a0123456789876543210) (t :: [a0123456789876543210]) =
        Contains t t
    instance SuppressUnusedWarnings ContainsSym1 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) ContainsSym1KindInference) GHC.Tuple.())
    data ContainsSym1 (l :: a0123456789876543210) (l :: TyFun [a0123456789876543210] Bool)
      = forall arg. SameKind (Apply (ContainsSym1 l) arg) (ContainsSym2 l arg) =>
        ContainsSym1KindInference
    type instance Apply (ContainsSym1 l) l = Contains l l
    instance SuppressUnusedWarnings ContainsSym0 where
      suppressUnusedWarnings _
        = snd ((GHC.Tuple.(,) ContainsSym0KindInference) GHC.Tuple.())
    data ContainsSym0 (l :: TyFun a0123456789876543210 (TyFun [a0123456789876543210] Bool
                                                        -> GHC.Types.Type))
      = forall arg. SameKind (Apply ContainsSym0 arg) (ContainsSym1 arg) =>
        ContainsSym0KindInference
    type instance Apply ContainsSym0 l = ContainsSym1 l
    type family Contains (a :: a) (a :: [a]) :: Bool where
      Contains _z_0123456789876543210 '[] = FalseSym0
      Contains elt ((:) h t) = Apply (Apply (:||$) (Apply (Apply (:==$) elt) h)) (Apply (Apply ContainsSym0 elt) t)
    sContains ::
      forall (t :: a) (t :: [a]).
      SEq a =>
      Sing t -> Sing t -> Sing (Apply (Apply ContainsSym0 t) t :: Bool)
    sContains _ SNil = SFalse
    sContains (sElt :: Sing elt) (SCons (sH :: Sing h) (sT :: Sing t))
      = (applySing
           ((applySing ((singFun2 @(:||$)) (%:||)))
              ((applySing ((applySing ((singFun2 @(:==$)) (%:==))) sElt)) sH)))
          ((applySing
              ((applySing ((singFun2 @ContainsSym0) sContains)) sElt))
             sT)