I'm in ghci and find that the following works:
let foo = ["a", "b", "c"]
... but this doesn't work:
let bar = ["a",
"b",
"c"]
... nor does this:
let baz = ["a"] ++
["b"] ++
["c"]
The same error is provided when I try to compile it as a file, so it's not something that comes from being in ghci vs using ghc.
The error:
[1 of 1] Compiling Main ( test.hs, test.o )
test.hs:3:1: error:
parse error (possibly incorrect indentation or mismatched brackets)
In GHCi you can use :{ :} for multiline expressions. For example:
Prelude> :{
Prelude| let bar = ["a",
Prelude| "b",
Prelude| "c"]
Prelude| :}
The :{ :} keeps GHCi from evaluating your code after the next newline and throwing errors at you because it is not a complete expression.
Note also that the let is not needed for top-level definitions. In a normal Haskell source file you would just write:
bar = ["a",
"b",
"c"]
Furthermore in newer GHCi versions (8.0+) you don't need the let either.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With