Add Typeable constraint to `fromStaticPtr`
Motivation
Currently the GHC.StaticPtr.IsStatic
class is defined as
class IsStatic p where
fromStaticPtr :: StaticPtr a -> p a
Unfortunately, this does not allow one to define an IsStatic
instance for Cloud Haskell's Static
. Specifically, the Cloud Haskell library distributed-static defines a function
staticPtr :: Typeable a => StaticPtr a -> Static a
The extra Typeable a
constraint means we can't write fromStaticPtr = staticPtr
.
Proposal
It seems like we could change the definition of IsStatic
to
class IsStatic p where
fromStaticPtr :: Typeable a => StaticPtr a -> p a
The GHC users guide says that for any StaticPtr a
, a
is required to have a Typeable
instance, so this doesn't seem to lose any generality, and it allows instance IsStatic Static
. Alternatively, one could provide a way to extract evidence of Typeable a
from a StaticPtr a
.