<div dir="ltr">Yes it's okay and sometimes expected for them not not behave the same, but see e.g. haxl and ApplicativeDo.<div><br></div><div>For example, the applicative version may run foo and bar in parallell. But using monad they run sequentially.</div><div><br></div><div>- Adam</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 30, 2015 at 5:45 PM, Alexey Uimanov <span dir="ltr"><<a href="mailto:s9gf4ult@gmail.com" target="_blank">s9gf4ult@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">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: <div><br></div><div><font face="monospace, monospace">foo :: Int -> T String</font></div><div><font face="monospace, monospace">bar :: Int -> T Int</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">(,) <$> foo 10 <*> bar "20" </font></div><div><br></div><div>behaves not like this code: </div><div><br></div><div><div><font face="monospace, monospace">foobar = do</font></div><div><font face="monospace, monospace">    x <- foo 10</font></div><div><font face="monospace, monospace">    y <- bar "20"</font></div><div><font face="monospace, monospace">    return (x, y)</font></div></div><div><br></div><div>The word "behaves" I mean not just returning value but the effect performed also.</div><div><br></div></div>
<br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div>