singletons-base-3.5: tests/compile-and-dump/Singletons/T563.golden
Singletons/T563.hs:(0,0)-(0,0): Splicing declarations
singletons
[d| infixr 6 `unFoo`
data Foo = MkFoo {unFoo :: Bool} |]
======>
infixr 6 `unFoo`
data Foo = MkFoo {unFoo :: Bool}
type MkFooSym0 :: (~>) Bool Foo
data MkFooSym0 :: (~>) Bool Foo
where
MkFooSym0KindInference :: SameKind (Apply MkFooSym0 arg) (MkFooSym1 arg) =>
MkFooSym0 a0123456789876543210
type instance Apply @Bool @Foo MkFooSym0 a0123456789876543210 = MkFoo a0123456789876543210
instance SuppressUnusedWarnings MkFooSym0 where
suppressUnusedWarnings = snd ((,) MkFooSym0KindInference ())
type MkFooSym1 :: Bool -> Foo
type family MkFooSym1 (a0123456789876543210 :: Bool) :: Foo where
MkFooSym1 a0123456789876543210 = MkFoo a0123456789876543210
data SFoo :: Foo -> Type
where
SMkFoo :: forall (n :: Bool). (Sing n) -> SFoo (MkFoo n :: Foo)
type instance Sing @Foo = SFoo
instance SingKind Foo where
type Demote Foo = Foo
fromSing (SMkFoo b) = MkFoo (fromSing b)
toSing (MkFoo (b :: Demote Bool))
= (\cases (SomeSing c) -> SomeSing (SMkFoo c))
(toSing b :: SomeSing Bool)
instance SingI n => SingI (MkFoo (n :: Bool)) where
sing = SMkFoo sing
instance SingI1 MkFoo where
liftSing = SMkFoo
instance SingI (MkFooSym0 :: (~>) Bool Foo) where
sing = singFun1 @MkFooSym0 SMkFoo
Singletons/T563.hs:(0,0)-(0,0): Splicing declarations
singletonsOnly
[d| unFoo' :: Foo -> Bool
unFoo' = unFoo |]
======>
type UnFoo'Sym0 :: (~>) Foo Bool
data UnFoo'Sym0 :: (~>) Foo Bool
where
UnFoo'Sym0KindInference :: SameKind (Apply UnFoo'Sym0 arg) (UnFoo'Sym1 arg) =>
UnFoo'Sym0 a0123456789876543210
type instance Apply @Foo @Bool UnFoo'Sym0 a0123456789876543210 = UnFoo' a0123456789876543210
instance SuppressUnusedWarnings UnFoo'Sym0 where
suppressUnusedWarnings = snd ((,) UnFoo'Sym0KindInference ())
type UnFoo'Sym1 :: Foo -> Bool
type family UnFoo'Sym1 (a0123456789876543210 :: Foo) :: Bool where
UnFoo'Sym1 a0123456789876543210 = UnFoo' a0123456789876543210
type UnFoo' :: Foo -> Bool
type family UnFoo' (a :: Foo) :: Bool where
UnFoo' a_0123456789876543210 = Apply UnFooSym0 a_0123456789876543210
sUnFoo' ::
(forall (t :: Foo). Sing t -> Sing (UnFoo' t :: Bool) :: Type)
sUnFoo' (sA_0123456789876543210 :: Sing a_0123456789876543210)
= applySing sUnFoo sA_0123456789876543210
instance SingI (UnFoo'Sym0 :: (~>) Foo Bool) where
sing = singFun1 @UnFoo'Sym0 sUnFoo'
Singletons/T563.hs:0:0: error: [GHC-76037]
Not in scope: type constructor or class ‘UnFooSym0’
Suggested fix:
Perhaps use one of these:
‘UnFoo'Sym0’ (line 13), ‘MkFooSym0’ (line 7),
‘UnFoo'Sym1’ (line 13)
|
13 | $(singletonsOnly [d|
| ^^^^^^^^^^^^^^^^^^^...