<div dir="ltr">1) It's not a problem, it's a improvement in syntax with lowering verbosity. It's similar with the difference between Pascal and C syntax. One of the reasons we all love Haskell is because it's not so verbose. I have asked often why do-block is so different, than non-do-block. Exchanging "x = foo" with "x <- foo" will result in error, so there is no problem that the difference is small. <div><br></div><div>2) you're right. May be lazyness could solve that? I'm not sure here.</div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-04-16 18:10 GMT+03:00 Sven Panne <span dir="ltr"><<a href="mailto:svenpanne@gmail.com" target="_blank">svenpanne@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">2017-04-16 14:37 GMT+02:00 Vassil Ognyanov Keremidchiev <span dir="ltr"><<a href="mailto:varosi@gmail.com" target="_blank">varosi@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>A small proposition for the next standard.</div></div></blockquote><div><br></div></span><div>I think every proposal should clearly state the problem it is trying to solve first, because only after there's some agreement that it is actually a problem, further discussion is useful.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>1) It is to lower verbosity with omitting 'let' keyword in do-notation and use only (=) for describing let/pure blocks. [...]</div></div></blockquote><div><br></div><div>As has been discussed quite a few times on this and other Haskell-related lists, "verbosity" is a very subjective measure, and the number of characters to type is one of the worst metrics for evaluating the usefulness of a feature.</div><div><br></div><div>In our example at hand, "let" is a very useful syntactic cue, and the visual difference between "x = foo" and "x <- foo" is a bit low IMHO. One can probably remove a lot of other syntactic stuff from Haskell and still keep it parsable by machines, but I think that's a non-goal. Remember that e.g. the entropy of English text is around 1 bit per character, but we don't speak binary, for a good reason. :-)<br></div><span class=""><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><span style="font-family:arial,helvetica,sans-serif">2) Second proposition is every pure expression ('let') in do-block to have visibility in whole block, just like top-level function is visible in whole module. Currently there is difference in visibility depending on that if a function is in do-block or is outside it.</span></div></div></blockquote><div><br></div></span><div>I think the difference is there for a good reason: The desugaring rules are easy to comprehend. With your proposal things get complicated. Take e.g. a slightly modified version of your example (which can easily be complicated much more by alternating the different forms of bindings):</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><span class=""><div><span style="font-family:monospace,monospace">main = do</span><br></div><div><font face="monospace, monospace"> z <- action x</font></div><div><font face="monospace, monospace"> x = expression1 y</font></div></span><div><font face="monospace, monospace"> y = expression2</font><span style="font-family:monospace,monospace"> </span><span style="font-family:monospace,monospace">z</span></div><span class=""><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"> putStrLn (x ++ y ++ z)</font></div></span></div></blockquote><div><br></div><div>What is the meaning of this? And what problem exactly is this part of the proposal trying to solve?</div></div></div></div>
</blockquote></div><br></div>