Why can't the library provide a `newtype`, one which supports `Applicative` *and* `Monad` interfaces (where the applicative and monadic interfaces match), and an un-newtyped variant that only supports `Applicaative`, as well as conversion functions?
I think this would be clearer, as it would force you to switch into "Monad"-mode purposefully, and the documentation on the conversion function can make very clear what is going on.
I agree that, now that we have AMP, applicative and monadic interfaces absolutely *should* match, and that it should be considered an error for them not to; semantically different interfaces can be provided with newtypes.
-- Andrew