
Hi Tom, I think you are looking for Type.Reflection.typeRepKind typeRepKind :: TypeRep (a :: k) -> TypeRep k which combined with typeRep :: Typeable a => TypeRep a withTypeable :: forall k (a :: k) rep (r :: TYPE rep). TypeRep a -> (Typeable a => r) -> r should allow you to define kindable :: forall (a :: k). Typeable a => Dict (Typeable k) as your subject line asked for, albeit not the message body. :-) Cheers, Adam On 23/08/2023 11:50, Tom Ellis wrote:
Morally I think that
class Typeable (a :: k)
should have been
class Typeable k => Typeable (a :: k)
If I'm wrong, could someone please elaborate why? If I'm right, please read on ...
That would be a breaking change, but could we at least get
kindable :: forall (a :: k). Typeable a => Dict (Typable (a :: k))
in the meantime?
Tom
-- Adam Gundry, Haskell Consultant Well-Typed LLP, https://www.well-typed.com/ Registered in England & Wales, OC335890 27 Old Gloucester Street, London WC1N 3AX, England