Skip to content

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?

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information