<div dir="ltr">It looks like you may be trying to do this with a proportional font, which is not going to work very well. You will have much better luck if you use a fixed width font when you need to line up columns where some of the lines have non-whitespace characters.<div><br></div><div>An alternative approach would be to have a line break immediately after "do", so all of the lines that need to be indented have only preceding whitespace. The hindent code formatter uses this style, as you can see in any of its examples with do blocks, such as this: <a href="https://github.com/commercialhaskell/hindent/blob/master/TESTS.md#function-declarations">https://github.com/commercialhaskell/hindent/blob/master/TESTS.md#function-declarations</a> - when code is written in this style, the blocks will line up visually whether or not the font is fixed width.</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, May 15, 2018 at 10:02 AM Sylvester Hazel via Haskell-Cafe <<a href="mailto:haskell-cafe@haskell.org">haskell-cafe@haskell.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Hi Victor,<br></div>It is frustrating that posting plain text is contorted (via <a href="http://nabble.com" target="_blank">nabble.com</a> and then again in my <a href="http://mail.google.com" target="_blank">mail.google.com</a> account) - please see the attachment. <br>I really have sent the right indentation copping the Hutton's script.<br></div>Is it so difficult for you guys to replicate this obvious failure of GHC on "do notation" with white space?<br></div>Regards,<br></div>Sylvester<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 15, 2018 at 6:27 PM, Viktor Dukhovni <span dir="ltr"><<a href="mailto:ietf-dane@dukhovni.org" target="_blank">ietf-dane@dukhovni.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><br>
<br>
> On May 15, 2018, at 12:13 PM, Sylvester via Haskell-Cafe <<a href="mailto:haskell-cafe@haskell.org" target="_blank">haskell-cafe@haskell.org</a>> wrote:<br>
> <br>
> strlen in Hutton 2ed 10.5 Derived primitives => run on Windows 7 Haskell<br>
> Platform 8.2.2<br>
> strlen :: IO ()<br>
> strlen = do  putStr "Enter a string: " <br>
>                   xs <-  getLine <br>
>                   putStr "The string has " <br>
>                   putStr (show (length xs)) <br>
>                   putStr " characters" <br>
> ===================================================<br>
<br>
</span>The above indentation looks wrong.  Try:<br>
<br>
----------<br>
$ cat foo.hs<br>
<span>strlen :: IO ()<br>
strlen = do putStr "Enter a string: " <br>
            xs <-  getLine <br>
            putStr "The string has " <br>
            putStr (show (length xs)) <br>
</span>            putStrLn " characters"<br>
<br>
$ ghci foo.hs <br>
GHCi, version 8.0.2: <a href="http://www.haskell.org/ghc/" rel="noreferrer" target="_blank">http://www.haskell.org/ghc/</a>  :? for help<br>
[1 of 1] Compiling Main             ( foo.hs, interpreted )<br>
Ok, modules loaded: Main.<br>
Loaded GHCi configuration from /tmp/haskell-stack-ghci/05485125/ghci-script<br>
*Main> strlen<br>
Enter a string: foo<br>
The string has 3 characters<br>
*Main><br>
---------- <br>
<br>
If I incorrectly indent the subsequent lines:<br>
<span><br>
strlen :: IO ()<br>
strlen = do putStr "Enter a string: " <br>
              xs <-  getLine <br>
              putStr "The string has " <br>
              putStr (show (length xs)) <br>
</span>              putStrLn " characters"<br>
<br>
<br>
Then I see an error:<br>
<br>
foo.hs:2:13: error:<br>
<span class="m_3198077179781145881im m_3198077179781145881HOEnZb">    Parse error in pattern: putStr<br>
    Possibly caused by a missing 'do'?<br>
<br>
</span><span class="m_3198077179781145881HOEnZb"><font color="#888888">-- <br>
        Viktor.<br>
</font></span><div class="m_3198077179781145881HOEnZb"><div class="m_3198077179781145881h5"><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</div></div></blockquote></div><br></div>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>