singletons-base-3.1: tests/compile-and-dump/Singletons/T445.golden
Singletons/T445.hs:0:0:: Splicing declarations
genDefunSymbols [''Lit]
======>
type LitSym0 :: (~>) Natural Nat
data LitSym0 :: (~>) Natural Nat
where
LitSym0KindInference :: SameKind (Apply LitSym0 arg) (LitSym1 arg) =>
LitSym0 a0123456789876543210
type instance Apply LitSym0 a0123456789876543210 = Lit a0123456789876543210
instance SuppressUnusedWarnings LitSym0 where
suppressUnusedWarnings = snd (((,) LitSym0KindInference) ())
type LitSym1 :: Natural -> Nat
type family LitSym1 (a0123456789876543210 :: Natural) :: Nat where
LitSym1 a0123456789876543210 = Lit a0123456789876543210
Singletons/T445.hs:(0,0)-(0,0): Splicing declarations
promoteOnly
[d| evenb :: Nat -> Bool
evenb Zero = True
evenb (Succ Zero) = False
evenb (Succ (Succ n)) = evenb n
filterEvenGt7 :: [Nat] -> [Nat]
filterEvenGt7 = filter (\ x -> evenb x && x > lit 7) |]
======>
type family Lambda_0123456789876543210 a_0123456789876543210 x where
Lambda_0123456789876543210 a_0123456789876543210 x = Apply (Apply (&&@#@$) (Apply EvenbSym0 x)) (Apply (Apply (>@#@$) x) (Apply LitSym0 (FromInteger 7)))
data Lambda_0123456789876543210Sym0 a_01234567898765432100123456789876543210
where
Lambda_0123456789876543210Sym0KindInference :: SameKind (Apply Lambda_0123456789876543210Sym0 arg) (Lambda_0123456789876543210Sym1 arg) =>
Lambda_0123456789876543210Sym0 a_01234567898765432100123456789876543210
type instance Apply Lambda_0123456789876543210Sym0 a_01234567898765432100123456789876543210 = Lambda_0123456789876543210Sym1 a_01234567898765432100123456789876543210
instance SuppressUnusedWarnings Lambda_0123456789876543210Sym0 where
suppressUnusedWarnings
= snd (((,) Lambda_0123456789876543210Sym0KindInference) ())
data Lambda_0123456789876543210Sym1 a_01234567898765432100123456789876543210 x0123456789876543210
where
Lambda_0123456789876543210Sym1KindInference :: SameKind (Apply (Lambda_0123456789876543210Sym1 a_01234567898765432100123456789876543210) arg) (Lambda_0123456789876543210Sym2 a_01234567898765432100123456789876543210 arg) =>
Lambda_0123456789876543210Sym1 a_01234567898765432100123456789876543210 x0123456789876543210
type instance Apply (Lambda_0123456789876543210Sym1 a_01234567898765432100123456789876543210) x0123456789876543210 = Lambda_0123456789876543210 a_01234567898765432100123456789876543210 x0123456789876543210
instance SuppressUnusedWarnings (Lambda_0123456789876543210Sym1 a_01234567898765432100123456789876543210) where
suppressUnusedWarnings
= snd (((,) Lambda_0123456789876543210Sym1KindInference) ())
type family Lambda_0123456789876543210Sym2 a_01234567898765432100123456789876543210 x0123456789876543210 where
Lambda_0123456789876543210Sym2 a_01234567898765432100123456789876543210 x0123456789876543210 = Lambda_0123456789876543210 a_01234567898765432100123456789876543210 x0123456789876543210
type FilterEvenGt7Sym0 :: (~>) [Nat] [Nat]
data FilterEvenGt7Sym0 :: (~>) [Nat] [Nat]
where
FilterEvenGt7Sym0KindInference :: SameKind (Apply FilterEvenGt7Sym0 arg) (FilterEvenGt7Sym1 arg) =>
FilterEvenGt7Sym0 a0123456789876543210
type instance Apply FilterEvenGt7Sym0 a0123456789876543210 = FilterEvenGt7 a0123456789876543210
instance SuppressUnusedWarnings FilterEvenGt7Sym0 where
suppressUnusedWarnings
= snd (((,) FilterEvenGt7Sym0KindInference) ())
type FilterEvenGt7Sym1 :: [Nat] -> [Nat]
type family FilterEvenGt7Sym1 (a0123456789876543210 :: [Nat]) :: [Nat] where
FilterEvenGt7Sym1 a0123456789876543210 = FilterEvenGt7 a0123456789876543210
type EvenbSym0 :: (~>) Nat Bool
data EvenbSym0 :: (~>) Nat Bool
where
EvenbSym0KindInference :: SameKind (Apply EvenbSym0 arg) (EvenbSym1 arg) =>
EvenbSym0 a0123456789876543210
type instance Apply EvenbSym0 a0123456789876543210 = Evenb a0123456789876543210
instance SuppressUnusedWarnings EvenbSym0 where
suppressUnusedWarnings = snd (((,) EvenbSym0KindInference) ())
type EvenbSym1 :: Nat -> Bool
type family EvenbSym1 (a0123456789876543210 :: Nat) :: Bool where
EvenbSym1 a0123456789876543210 = Evenb a0123456789876543210
type FilterEvenGt7 :: [Nat] -> [Nat]
type family FilterEvenGt7 (a :: [Nat]) :: [Nat] where
FilterEvenGt7 a_0123456789876543210 = Apply (Apply FilterSym0 (Apply Lambda_0123456789876543210Sym0 a_0123456789876543210)) a_0123456789876543210
type Evenb :: Nat -> Bool
type family Evenb (a :: Nat) :: Bool where
Evenb 'Zero = TrueSym0
Evenb ('Succ 'Zero) = FalseSym0
Evenb ('Succ ('Succ n)) = Apply EvenbSym0 n