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