packages feed

singletons-base-3.1: tests/compile-and-dump/Singletons/T489.golden

Singletons/T489.hs:(0,0)-(0,0): Splicing declarations
    singletons
      [d| blah :: Maybe a -> [a]
          blah (Just @a x) = [x :: a]
          blah (Nothing @a) = [] :: [a]
          flurmp :: Maybe () -> ()
          flurmp (Nothing @_) = ()
          flurmp (Just ()) = () |]
  ======>
    blah :: Maybe a -> [a]
    blah (Just @a x) = [x :: a]
    blah (Nothing @a) = [] :: [a]
    flurmp :: Maybe () -> ()
    flurmp (Nothing @_) = ()
    flurmp (Just ()) = ()
    type FlurmpSym0 :: (~>) (Maybe ()) ()
    data FlurmpSym0 :: (~>) (Maybe ()) ()
      where
        FlurmpSym0KindInference :: SameKind (Apply FlurmpSym0 arg) (FlurmpSym1 arg) =>
                                   FlurmpSym0 a0123456789876543210
    type instance Apply FlurmpSym0 a0123456789876543210 = Flurmp a0123456789876543210
    instance SuppressUnusedWarnings FlurmpSym0 where
      suppressUnusedWarnings = snd (((,) FlurmpSym0KindInference) ())
    type FlurmpSym1 :: Maybe () -> ()
    type family FlurmpSym1 (a0123456789876543210 :: Maybe ()) :: () where
      FlurmpSym1 a0123456789876543210 = Flurmp a0123456789876543210
    type BlahSym0 :: (~>) (Maybe a) [a]
    data BlahSym0 :: (~>) (Maybe a) [a]
      where
        BlahSym0KindInference :: SameKind (Apply BlahSym0 arg) (BlahSym1 arg) =>
                                 BlahSym0 a0123456789876543210
    type instance Apply BlahSym0 a0123456789876543210 = Blah a0123456789876543210
    instance SuppressUnusedWarnings BlahSym0 where
      suppressUnusedWarnings = snd (((,) BlahSym0KindInference) ())
    type BlahSym1 :: Maybe a -> [a]
    type family BlahSym1 (a0123456789876543210 :: Maybe a) :: [a] where
      BlahSym1 a0123456789876543210 = Blah a0123456789876543210
    type Flurmp :: Maybe () -> ()
    type family Flurmp (a :: Maybe ()) :: () where
      Flurmp ('Nothing @_) = Tuple0Sym0
      Flurmp ('Just '()) = Tuple0Sym0
    type Blah :: Maybe a -> [a]
    type family Blah (a :: Maybe a) :: [a] where
      Blah ('Just @a x) = Apply (Apply (:@#@$) (x :: a)) NilSym0
      Blah ('Nothing @a) = NilSym0 :: [a]
    sFlurmp ::
      forall (t :: Maybe ()). Sing t -> Sing (Apply FlurmpSym0 t :: ())
    sBlah ::
      forall a (t :: Maybe a). Sing t -> Sing (Apply BlahSym0 t :: [a])
    sFlurmp (SNothing @_) = STuple0
    sFlurmp (SJust STuple0) = STuple0
    sBlah (SJust @a (sX :: Sing x))
      = (applySing
           ((applySing ((singFun2 @(:@#@$)) SCons)) (sX :: Sing (x :: a))))
          SNil
    sBlah (SNothing @a) = SNil :: Sing (NilSym0 :: [a])
    instance SingI (FlurmpSym0 :: (~>) (Maybe ()) ()) where
      sing = (singFun1 @FlurmpSym0) sFlurmp
    instance SingI (BlahSym0 :: (~>) (Maybe a) [a]) where
      sing = (singFun1 @BlahSym0) sBlah