packages feed

singletons-2.1: tests/compile-and-dump/Singletons/T78.ghc710.template

Singletons/T78.hs:(0,0)-(0,0): Splicing declarations
    singletons
      [d| foo :: MaybeBool -> Bool
          foo (Just False) = False
          foo (Just True) = True
          foo Nothing = False |]
  ======>
    foo :: MaybeBool -> Bool
    foo (Just False) = False
    foo (Just True) = True
    foo Nothing = False
    type FooSym1 (t :: Maybe Bool) = Foo t
    instance SuppressUnusedWarnings FooSym0 where
      suppressUnusedWarnings _
        = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())
    data FooSym0 (l :: TyFun (Maybe Bool) Bool)
      = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>
        FooSym0KindInference
    type instance Apply FooSym0 l = FooSym1 l
    type family Foo (a :: Maybe Bool) :: Bool where
      Foo (Just False) = FalseSym0
      Foo (Just True) = TrueSym0
      Foo Nothing = FalseSym0
    sFoo ::
      forall (t :: Maybe Bool). Sing t -> Sing (Apply FooSym0 t :: Bool)
    sFoo (SJust SFalse)
      = let
          lambda ::
            t ~ Apply JustSym0 FalseSym0 => Sing (Apply FooSym0 t :: Bool)
          lambda = SFalse
        in lambda
    sFoo (SJust STrue)
      = let
          lambda ::
            t ~ Apply JustSym0 TrueSym0 => Sing (Apply FooSym0 t :: Bool)
          lambda = STrue
        in lambda
    sFoo SNothing
      = let
          lambda :: t ~ NothingSym0 => Sing (Apply FooSym0 t :: Bool)
          lambda = SFalse
        in lambda