[Haskell-cafe] commenting out a line of code

David Turner dct25-561bs at mythic-beasts.com
Tue Nov 15 13:14:35 UTC 2016


On 15 November 2016 at 12:53, Doaitse Swierstra <doaitse at swierstra.net>
 wrote:

> The answer is very simple ;-} The report says that after a do the first
> symbol to encounter determines the indentation level; so putStrLn “done” is
> part of the else branch. Obvious, isn’t it.
>

The outer do block should be desugared first, and the `putStrLn "done"` has
the same indent as the `if` so it gets a semicolon, in that block, meaning
it looks like this:

main = do
  { if True
    then do
      putStrLn "A"
    else do
      -- putStrLn "B"
  ; putStrLn "done"
  }



On 15 November 2016 at 12:31, Norbert Melzer <timmelzer at gmail.com> wrote:

> I'm not quite sure, but I'd guess either one of
>
> 1.) It does not compile at all because of suspicious indentation
> 2.) It will just print "A" but not "done" because that is considered
> beeing in the else-branch.
>


I get *both* of these behaviours! When building, it complains about an
empty 'do' block. When running through `stack ghci` it doesn't seem to mind.


[linuxadmin at trac-leeds-09-vm01 13:07:57 ~/indent-puzzle ]
$ stack build
indent-puzzle-0.1.0.0: build
Preprocessing executable 'indent-puzzle-exe' for indent-puzzle-0.1.0.0...
[1 of 1] Compiling Main             ( app/Main.hs,
.stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/indent-
puzzle-exe/indent-puzzle-exe-tmp/Main.o )

/home/linuxadmin/indent-puzzle/app/Main.hs:5:10: Empty 'do' block

--  While building package indent-puzzle-0.1.0.0 using:
      /home/linuxadmin/.stack/setup-exe-cache/x86_64-linux/setup-
Simple-Cabal-1.22.5.0-ghc-7.10.3
--builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.5.0
build exe:indent-puzzle-exe --ghc-options " -ddump-hi -ddump-to-file"
    Process exited with code: ExitFailure 1
[linuxadmin at trac-leeds-09-vm01 13:08:00 ~/indent-puzzle ]
$ stack ghci
indent-puzzle-0.1.0.0: build
Preprocessing executable 'indent-puzzle-exe' for indent-puzzle-0.1.0.0...
[1 of 1] Compiling Main             ( app/Main.hs,
.stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/indent-
puzzle-exe/indent-puzzle-exe-tmp/Main.o )

/home/linuxadmin/indent-puzzle/app/Main.hs:5:10: Empty 'do' block

--  While building package indent-puzzle-0.1.0.0 using:
      /home/linuxadmin/.stack/setup-exe-cache/x86_64-linux/setup-
Simple-Cabal-1.22.5.0-ghc-7.10.3
--builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.5.0
build exe:indent-puzzle-exe --ghc-options " -ddump-hi -ddump-to-file"
    Process exited with code: ExitFailure 1
Warning: build failed, but optimistically launching GHCi anyway
The following GHC options are incompatible with GHCi and have not been
passed to it: -threaded
Using main module: 1. Package `indent-puzzle' component
exe:indent-puzzle-exe with main-is file: /home/linuxadmin/indent-
puzzle/app/Main.hs
Configuring GHCi with the following packages: indent-puzzle
GHCi, version 7.10.3: http://www.haskell.org/ghc/  :? for help
[1 of 1] Compiling Main             (
/home/linuxadmin/indent-puzzle/app/Main.hs,
interpreted )
Ok, modules loaded: Main.
*Main> main
A
*Main>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20161115/743b0fa1/attachment.html>


More information about the Haskell-Cafe mailing list