
Yes it's okay and sometimes expected for them not not behave the same, but
see e.g. haxl and ApplicativeDo.
For example, the applicative version may run foo and bar in parallell. But
using monad they run sequentially.
- Adam
On Thu, Apr 30, 2015 at 5:45 PM, Alexey Uimanov
Hello, I have such a question: assume you have some type `T` which has Applicative and Monad instances. Is it ok if code like this:
foo :: Int -> T String bar :: Int -> T Int
(,) <$> foo 10 <*> bar "20"
behaves not like this code:
foobar = do x <- foo 10 y <- bar "20" return (x, y)
The word "behaves" I mean not just returning value but the effect performed also.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe