My message was written too hastily, sorry about that.

The example Alexey asked is exactly what the ApplicativeDo proposal[1] uses as motivation. The point of it is that you shouldn't need to care about writing applicative or do-style, when the behavior differs the most efficient one can be used.
Though as it stands the proposal seems to run into the problem of being unintuitive like others mentioned since you need to enable an extension. A type implementing this functionality would need to be documented as  "Enable ApplicativeDo when using this, or be very confused"


[1] https://ghc.haskell.org/trac/ghc/wiki/ApplicativeDo

- Adam


On Fri, May 1, 2015 at 2:00 PM, Ross Paterson <R.Paterson@city.ac.uk> wrote:
On Thu, Apr 30, 2015 at 10:11:49PM -0700, Andrew Gibiansky wrote:
> 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.

This requirement is in the documentation for both Applicative and Monad
classes.  (It's been in Applicative since 2010, and was added to Monad
in the AMP release.)
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe