singletons-base-3.0: tests/compile-and-dump/Singletons/OverloadedStrings.golden
Singletons/OverloadedStrings.hs:(0,0)-(0,0): Splicing declarations
singletons
[d| symId :: Symbol -> Symbol
symId x = x
foo :: Symbol
foo = symId "foo" |]
======>
symId :: Symbol -> Symbol
symId x = x
foo :: Symbol
foo = symId "foo"
type FooSym0 :: Symbol
type family FooSym0 :: Symbol where
FooSym0 = Foo
type SymIdSym0 :: (~>) Symbol Symbol
data SymIdSym0 :: (~>) Symbol Symbol
where
SymIdSym0KindInference :: SameKind (Apply SymIdSym0 arg) (SymIdSym1 arg) =>
SymIdSym0 a0123456789876543210
type instance Apply SymIdSym0 a0123456789876543210 = SymId a0123456789876543210
instance SuppressUnusedWarnings SymIdSym0 where
suppressUnusedWarnings = snd (((,) SymIdSym0KindInference) ())
type SymIdSym1 :: Symbol -> Symbol
type family SymIdSym1 (a0123456789876543210 :: Symbol) :: Symbol where
SymIdSym1 a0123456789876543210 = SymId a0123456789876543210
type Foo :: Symbol
type family Foo :: Symbol where
Foo = Apply SymIdSym0 (FromString "foo")
type SymId :: Symbol -> Symbol
type family SymId (a :: Symbol) :: Symbol where
SymId x = x
sFoo :: Sing (FooSym0 :: Symbol)
sSymId ::
forall (t :: Symbol). Sing t -> Sing (Apply SymIdSym0 t :: Symbol)
sFoo
= (applySing ((singFun1 @SymIdSym0) sSymId))
(sFromString (sing :: Sing "foo"))
sSymId (sX :: Sing x) = sX
instance SingI (SymIdSym0 :: (~>) Symbol Symbol) where
sing = (singFun1 @SymIdSym0) sSymId