Fix Applicative instances in the wake of AMP
I haven't tracked down all the problems yet, but several experiments leading to validation failures strongly suggest that some
Applicative instances in the GHC tree fail to interact properly with their associated
Monad instances. That is,
ap ≠ (<*>) and/or
(>>) ≠ (*>). We should be able to fix these up by fleshing out the appropriate instance declarations.