Brian Hulley wrote: > f :: (forall a m. a -> m a) -> c -> d -> (m c, m d) The above is wrong - there is no way to quantify m properly. This must be why intersection types need to be written with "&" after all....