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 (t :: Symbol) = SymId t instance SuppressUnusedWarnings SymIdSym0 where suppressUnusedWarnings = snd ((GHC.Tuple.(,) SymIdSym0KindInference) GHC.Tuple.()) data SymIdSym0 (l :: TyFun Symbol Symbol) = forall arg. SameKind (Apply SymIdSym0 arg) (SymIdSym1 arg) => SymIdSym0KindInference type instance Apply SymIdSym0 l = SymId l 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"))