<div dir="ltr">theres a very simple way to do non recursive let already! do notation in the identity monad. I use it quite a lot lately.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 10, 2013 at 1:49 PM, Ertugrul Söylemez <span dir="ltr">&lt;<a href="mailto:es@ertes.de" target="_blank">es@ertes.de</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="im">&quot;Ezra e. k. Cooper&quot; &lt;<a href="mailto:ezra@ezrakilty.net">ezra@ezrakilty.net</a>&gt; wrote:<br>


<br>
&gt; As starter suggestions for the keyword or syntax, I submit:<br>
&gt;<br>
&gt;   let new x = expr in body   -- Not the old x!<br>
<br>
</div>It&#39;s not the old x in either case (recursive and non-recursive).<br>
<div class="im"><br>
<br>
&gt;   let shadowing x = expr in body<br>
&gt;<br>
&gt;   shadow x = expr in body<br>
<br>
</div>It&#39;s shadowing in either case.<br>
<div class="im"><br>
<br>
&gt;   let x =! expr in body  -- The explosive bang gives an imperative<br>
&gt;   flavor.<br>
<br>
</div>(=!) is a valid operator name.<br>
<div class="im"><br>
<br>
&gt; Other suggestions would be welcome.<br>
<br>
</div>My suggestion:  Don&#39;t add a non-recursive let.  See my other post about<br>
general recursion and totality checking.<br>
<br>
<br>
Greets,<br>
Ertugrul<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Not to be or to be and (not to be or to be and (not to be or to be and<br>
(not to be or to be and ... that is the list monad.<br>
</font></span><br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div>