Oops, I was misreading. You have `e` here as the next monad.<div><br></div><div>In any case, I think the monad identity concept messed up. The property:</div><div>  return x &gt;&gt;= f = f x</div><div><br></div><div>Logically only has meaning when `=` applies to values in the domain. `undefined` is not a value in the domain.</div>
<div><br></div><div>We can define monads - which meet monad laws - even in strict languages.</div><div><br></div><div><br></div><div><div class="gmail_quote">On Sat, Jan 21, 2012 at 11:02 AM, David Barbour <span dir="ltr">&lt;<a href="mailto:dmbarbour@gmail.com">dmbarbour@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div class="im">On Sat, Jan 21, 2012 at 10:51 AM, David Menendez <span dir="ltr">&lt;<a href="mailto:dave@zednenem.com" target="_blank">dave@zednenem.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>The Eval monad has the property: return undefined &gt;&gt;= const e = e.</div></blockquote><div><br></div></div><div>You can&#39;t write `const e` in the Eval monad.</div><div class="im"><div><br></div><blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

 </blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">