Currently, Applicative is a superclass of Alternative. Unfortunately, the *only* laws for Alternative are the monoid laws. Sensible sets of laws have been proposed in the past, but unfortunately *none* of them cover all the current important instances. Thus we have a rather awkward situation where Alternative is a subclass of Applicative, but there's no real way to take advantage of that fact. There are essentially no useful functions that would end up with signatures that look like
p :: (Applicative f, Alternative f) => ...
I'm wondering, therefore, what people think of the idea of making Alternative entirely independent—just a version of Monoid with a different kind.
class Alternative f where