Polykinded phantom type (a :: k) gets (Typeable a, Typeable k) constraint, do away with 'Typeable k'
When we define a polykinded datatype with a phantom argumce ent
type P :: forall k. k -> Type
data P a = P
deriving stock Data
we get two constraints
instance (Typeable @k a, Typeable @Type k) => Typeable @Type (P @k a)
instance (Typeable @k a, Typeable @Type k) => Data (P @k a)
but we can retrieve Typeable k
from Typeable a
. Does this matter and could we do away with the Typeable k
constraint?