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> <<a href="mailto:nominolo@googlemail.com">nominolo@googlemail.com</a>> 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>><br>> Once you have a polymorphic let, why do you need 'let' in the base<br>> language, at all? Is it possible to formulate Haskell entirely with<br>
> do-notation where there is a standard monad for let environments?<br>> Probably this was all discussed before in the design deliberations<br>> for the language standard. Pointers would be very much appreciated.
<br>><br><br> let x = ... in ...<br><br>is only equal<br><br> do x <- ...; ...<br><br>in the Identity monad. Also, why would "do" be more primitive than<br>"let". That way you would have to use monads everywhere. 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 <- e; .. } which is<br>just a different way of writing function binding (e >>= \x -> ...)
<br>consider more primitive than "let"?<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>