Thomas,<br><br>Thanks for the reply. My thinking was that once you have a polymorphic form, why single out any other? Less moving parts makes for less maintenance, etc.<br><br>Best wishes,<br><br>--greg<br><br><div><span class="gmail_quote">
On 6/28/07, <b class="gmail_sendername">Thomas Schilling</b> &lt;<a href="mailto:nominolo@googlemail.com">nominolo@googlemail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>On 28 jun 2007, at 21.17, Greg Meredith wrote:<br>&gt;<br>&gt; Once you have a polymorphic let, why do you need &#39;let&#39; in the base<br>&gt; language, at all? Is it possible to formulate Haskell entirely with<br>
&gt; do-notation where there is a standard monad for let environments?<br>&gt; Probably this was all discussed before in the design deliberations<br>&gt; for the language standard. Pointers would be very much appreciated.
<br>&gt;<br><br>&nbsp;&nbsp; let x = ... in ...<br><br>is only equal<br><br>&nbsp;&nbsp; do x &lt;- ...; ...<br><br>in the Identity monad.&nbsp;&nbsp;Also, why would &quot;do&quot; be more primitive than<br>&quot;let&quot;.&nbsp;&nbsp;That way you would have to use monads everywhere.&nbsp;&nbsp;Also, let
<br>is treated specially by the type checker (IIRC) and there are many,<br>many other reasons not to do that.<br><br>Why would you consider the syntactic sugar do { x &lt;- e; .. } which is<br>just a different way of writing function binding (e &gt;&gt;= \x -&gt; ...)
<br>consider more primitive than &quot;let&quot;?<br><br>/ Thomas<br><br><br></blockquote></div><br><br clear="all"><br>-- <br>L.G. Meredith<br>Managing Partner<br>Biosimilarity LLC<br>505 N 72nd St<br>Seattle, WA 98103<br>
<br>+1 206.650.3740<br><br><a href="http://biosimilarity.blogspot.com">http://biosimilarity.blogspot.com</a>