<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Oct 3, 2013 at 9:44 PM, Brandon Allbery <span dir="ltr"><<a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>></span> wrote:<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 class="im">On Thu, Oct 3, 2013 at 2:31 PM, Corentin Dupont <span dir="ltr"><<a href="mailto:corentin.dupont@gmail.com" target="_blank">corentin.dupont@gmail.com</a>></span> wrote:<br>
</div><div class="gmail_extra"><div class="gmail_quote"><div class="im">
<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:courier new,monospace">test :: Bool -> IO ()<br>test foo = do<br>
let bar = case foo of <br>
True -> "Foo"; <br>
False -> "Bar"<br> return ()</span><br><br></div><div>while this one does (just adding one space in front of True and False):<br><br><span style="font-family:courier new,monospace">test :: Bool -> IO ()<br>
test foo = do<br> let bar = case foo of <br> True -> "Foo"; <br> False -> "Bar"<br> return ()</span></div></div></blockquote><div><br></div></div><div>Do you understand how layout works? Informally, something that is more indented is a continuation of the previous expression, while something equally or less indented is a new expression. In this case, the previous expression is `bar = case foo of` and indenting `True` to the same level as `bar` means you have ended the expression starting with `bar =`. Adding just one extra space indicates that it's still part of `bar =`.</div>
<div><br></div><div>(ghc is actually being somewhat lenient here; strictly speaking, you are not indented beyond the `case` so it should have ended the `case` expression. ghc allows some sloppiness like this when there absolutely must be something else after, but there are limits mostly imposed by layout introducers like `let` and `do`.)</div>
</div></div></div></blockquote><div><br></div><div>Brandon,<br></div><div><br>Indentation of 'case' itself doesn't matter. The layout is introduced by 'of', and then it's the indentation of the lexeme which follows 'of' that matters. So GHC is correct here.</div>
<br></div><div class="gmail_quote">Roman<br></div></div></div>