In shortyes, &quot;do z &lt;- ..; foo&quot; desugars to &quot;... &gt;&gt;= \z -&gt; foo&quot;<br><br>The Haskell Report describes `do&#39; notation in detail:<br><br><a href="http://www.haskell.org/onlinereport/exps.html#sect3.14">http://www.haskell.org/onlinereport/exps.html#sect3.14</a><br>
<br>Real World Haskell describes its uses:<br><br><a href="http://book.realworldhaskell.org/read/io.html#io.bind">http://book.realworldhaskell.org/read/io.html#io.bind</a><br><br><div class="gmail_quote">On 8 August 2010 15:36, michael rice <span dir="ltr">&lt;<a href="mailto:nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><table cellpadding="0" cellspacing="0" border="0"><tbody><tr><td style="font: inherit;" valign="top">
<span style="font-family: courier,monaco,monospace,sans-serif;">What is &lt;- ?</span> Couldn&#39;t find anything on Hoogle.<br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;">
<span style="font-family: courier,monaco,monospace,sans-serif;">1)  main = do </span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">      x &lt;- getLine   -- get the value from the IO monad</span><br style="font-family: courier,monaco,monospace,sans-serif;">
<span style="font-family: courier,monaco,monospace,sans-serif;">      putStrLn $ &quot;You typed: &quot; ++ x</span><br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;">
<span style="font-family: courier,monaco,monospace,sans-serif;">2)  pythags = do</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">      z &lt;- [1..]     --get the value from the List monad?</span><br style="font-family: courier,monaco,monospace,sans-serif;">
<span style="font-family: courier,monaco,monospace,sans-serif;">      x &lt;- [1..z]</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">      y &lt;- [x..z]</span><br style="font-family: courier,monaco,monospace,sans-serif;">
<span style="font-family: courier,monaco,monospace,sans-serif;">      guard (x^2 + y^2 == z^2)</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">      return (x, y, z)</span><br style="font-family: courier,monaco,monospace,sans-serif;">
<br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">From: <a href="http://en.wikibooks.org/wiki/Haskell/Syntactic_sugar" target="_blank">http://en.wikibooks.org/wiki/Haskell/Syntactic_sugar</a></span><br style="font-family: courier,monaco,monospace,sans-serif;">
<br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">Do and proc notation</span><br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;">
<br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">                      Sweet                                Unsweet</span><br style="font-family: courier,monaco,monospace,sans-serif;">
<span style="font-family: courier,monaco,monospace,sans-serif;">Monadic binding  do x &lt;- getLIne                      getLine &gt;&gt;= \x -&gt;</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">                    putStrLn $ &quot;You typed: &quot; ++
 x     putStrLn $ &quot;You typed: &quot; ++ x</span><br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;">
<span style="font-family: courier,monaco,monospace,sans-serif;">So, Example 2 desugared becomes...</span><br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;">
<span style="font-family: courier,monaco,monospace,sans-serif;">     [1..] &gt;== \z -&gt;  ?</span><br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;">
<br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;"><br style="font-family: courier,monaco,monospace,sans-serif;">
<span style="font-family: courier,monaco,monospace,sans-serif;">Michael</span><br style="font-family: courier,monaco,monospace,sans-serif;"><br></td></tr></tbody></table><br>







      <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>