<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I don't know of any offhand that specifically call it out -- it's a natural consequence of the layout rule which is described in the Haskell Report. However, there is at least one ticket in Haskell' to fix it for if/then/else: <a href="http://hackage.haskell.org/trac/haskell-prime/ticket/23">http://hackage.haskell.org/trac/haskell-prime/ticket/23</a><div><br></div><div>-Ross</div><div><br><div><div>On Oct 8, 2009, at 1:03 PM, michael rice wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td valign="top" style="font: inherit;"><span style="font-family: courier,monaco,monospace,sans-serif;"></span><span style="font-family: courier,monaco,monospace,sans-serif;">Thanks all,<br><br>So, in a do expression <br><br>&nbsp;let x = 1</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp; y = 2<br>&nbsp;&nbsp;&nbsp;&nbsp; etc.<br style="font-family: courier,monaco,monospace,sans-serif;"></span><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp; in z = 1 + 2</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;">&nbsp; if &lt;bool expr&gt;</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family:
 courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp; then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; etc.<br style="font-family: courier,monaco,monospace,sans-serif;"></span><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; etc.<br><br>Is this deviation documented somewhere?<br><br>Michael<br style="font-family: courier,monaco,monospace,sans-serif;"></span><br>--- On <b>Thu, 10/8/09, Brandon S. Allbery KF8NH <i>&lt;<a href="mailto:allbery@ece.cmu.edu">allbery@ece.cmu.edu</a>&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Brandon S. Allbery KF8NH &lt;<a href="mailto:allbery@ece.cmu.edu">allbery@ece.cmu.edu</a>&gt;<br>Subject: Re: [Haskell-cafe] Let it be<br>To: "michael rice" &lt;<a href="mailto:nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;<br>Cc: "Brandon S. Allbery KF8NH" &lt;<a href="mailto:allbery@ece.cmu.edu">allbery@ece.cmu.edu</a>&gt;, <a href="mailto:haskell-cafe@haskell.org">haskell-cafe@haskell.org</a><br>Date: Thursday, October 8, 2009, 11:53 AM<br><br><div id="yiv1227448580"><div><div>On Oct 8, 2009,
 at 11:43 , michael rice wrote:</div><blockquote type="cite"><table style="" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; font-size-adjust: inherit; font-stretch: inherit;" valign="top"><span style="font-family: courier,monaco,monospace,sans-serif;">This doesn't:</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;">import System.Random</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">main = do</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp; gen &lt;- getStdGen</span><br style="font-family:
 courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp; let (randNumber, newGen) = randomR (1,6) gen :: (Int, StdGen)</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp; in putStrLn $ "Number is " ++ show randNumber</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;">[michael@localhost ~]$ runhaskell zz.hs</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;">zz.hs:4:2:</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp; The last statement in
 a 'do' construct must be an expression</span><font class="Apple-style-span" face="courier, monaco, monospace, sans-serif"><br></font></td></tr></tbody></table></blockquote></div><div><br></div><div>The problem here is that the "do" construct parses things a bit differently; if you're at the same indentation level, it inserts a (&gt;&gt;) on the assumption that the next line is an independent expression, so you need to indent the "in" a bit more to avoid it.</div><div><br></div><div>Note however that this usage is common enough that "do" provides a shorthand: &nbsp;you can simply omit the "in", and "let" will be parsed as if it were a statement:</div><div><br></div><div>&gt; main = do</div><div>&gt; &nbsp; gen &lt;- getStdGen</div><div>&gt; &nbsp; let (randNumber, newGen) = randomR (1,6) gen :: (Int,StdGen)</div><div>&gt; &nbsp; putStrLn $ "Number is " ++ show randNumber</div><br><div> <span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style=""><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><font class="Apple-style-span" face="Monaco"><span class="Apple-style-span" style="font-family: Monaco;"><span class="Apple-style-span" style="font-family: Monaco;">--&nbsp;</span></span></font></div><div><font class="Apple-style-span" face="Monaco"><span class="Apple-style-span" style="font-family: Monaco;"><span class="Apple-style-span" style="font-family: Monaco;">brandon s. allbery [solaris,freebsd,perl,pugs,haskell] <a rel="nofollow" ymailto="mailto:allbery@kf8nh.com" target="_blank" href="x-msg://652/mc/compose?to=allbery@kf8nh.com">allbery@kf8nh.com</a></span></span></font></div><div><font class="Apple-style-span" face="Monaco"><span class="Apple-style-span" style="font-family: Monaco;"><span class="Apple-style-span" style="font-family: Monaco;">system administrator [openafs,heimdal,too many hats] <a rel="nofollow" ymailto="mailto:allbery@ece.cmu.edu" target="_blank" href="x-msg://652/mc/compose?to=allbery@ece.cmu.edu">allbery@ece.cmu.edu</a></span></span></font></div><div><font class="Apple-style-span" face="Monaco"><span class="Apple-style-span" style="font-family: Monaco;"><span class="Apple-style-span" style="font-family: Monaco;">electrical and computer engineering, carnegie mellon university &nbsp; &nbsp;KF8NH</span></span></font></div><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><br class="Apple-interchange-newline"></span></span></span></div></span> </div><br></div></blockquote></td></tr></tbody></table><br>



      _______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>http://www.haskell.org/mailman/listinfo/haskell-cafe<br></blockquote></div><br></div></body></html>