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 SymIdSym1 (a0123456789876543210 :: Symbol) = SymId a0123456789876543210 instance SuppressUnusedWarnings SymIdSym0 where suppressUnusedWarnings = snd (((,) SymIdSym0KindInference) ()) data SymIdSym0 :: (~>) Symbol Symbol where SymIdSym0KindInference :: forall a0123456789876543210 arg. SameKind (Apply SymIdSym0 arg) (SymIdSym1 arg) => SymIdSym0 a0123456789876543210 type instance Apply SymIdSym0 a0123456789876543210 = SymId a0123456789876543210 type FooSym0 = Foo type family SymId (a :: Symbol) :: Symbol where SymId x = x type family Foo :: Symbol where Foo = Apply SymIdSym0 (Data.Singletons.Prelude.IsString.FromString "foo") sSymId :: forall (t :: Symbol). Sing t -> Sing (Apply SymIdSym0 t :: Symbol) sFoo :: Sing (FooSym0 :: Symbol) sSymId (sX :: Sing x) = sX sFoo = (applySing ((singFun1 @SymIdSym0) sSymId)) (Data.Singletons.Prelude.IsString.sFromString (sing :: Sing "foo")) instance SingI (SymIdSym0 :: (~>) Symbol Symbol) where sing = (singFun1 @SymIdSym0) sSymId