On 13/08/07, <b class="gmail_sendername">David Roundy</b> &lt;<a href="mailto:droundy@darcs.net">droundy@darcs.net</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Try executing:<br><br>&nbsp;&nbsp;do { x &lt;- return 2; undefined; return (x*x); }<br><br>in any monad you like, and you&#39;ll find that regardless of the *data*<br>dependencies (the return value of this monadic action is unambiguous), the
<br>undefined is evaluated *before* the value 4 is returned.<br>--<br><br></blockquote></div><br>Prelude&gt; :m + Control.Monad.Identity<br>Prelude Control.Monad.Identity&gt; runIdentity $ do { x &lt;- return 2; undefined; return (x*x); }
<br>Loading package mtl-1.0 ... linking ... done.<br>4<br><br>-- <br>Brian_Brunswick____brian@ithil.org____Wit____Disclaimer____!Shortsig_rules!