type D2 :: * data D2 = forall {k}. MkD2 (forall (p :: k -> *) (a :: k). p a -> Int) -- Defined at :3:1 type D3 :: * data D3 = MkD3 (forall k (p :: k -> *) (a :: k). p a -> Int) -- Defined at :4:1