On Thu, Apr 30, 2015 at 1:32 PM, Nikita Volkov <nikita.y.volkov@mail.ru> wrote:
I'm afraid I have to disagree with Adam as well. Recently I've triggered a prolonged discussion on exactly the subject (https://github.com/ekmett/either/pull/38). Being originally convinced that the instances can behave however it fits, I think I've been over-persuaded in the end.

Shortly speaking, while I can't say I like it, the rule seems to be that `<*>` should produce the same side effects as Monad's `ap`.


One example of a library where the Applicative and Monad instances mismatch is uu-parsinglib.

http://stackoverflow.com/questions/18275123/cannot-compute-minimal-length-of-a-parser-uu-parsinglib-in-haskell/18292328#18292328

There's a good reason the library is this way but the behavior can be rather startling.