<p dir="ltr">As usual, it depends on what aspects of behavior you consider important. As an obvious example, if the two produce (or store) distinct structures that are (==), that should be fine. Similarly, if the effects are different in a way that does not matter to your application (e.g., one may buffer more input than the other, or they may read from the same files in different orders, or they may produce the same images on screen using different graphics operations) then that should be fine too.</p>
<div class="gmail_quote">On Apr 30, 2015 11:45 AM, "Alexey Uimanov" <<a href="mailto:s9gf4ult@gmail.com">s9gf4ult@gmail.com</a>> wrote:<br type="attribution"><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>