Basically, when you leave out the ‘{’ then Haskell uses your intendation to insert ‘;}’ on later lines between the leading whitespace and the first token.
There some really old Haskell code out there that lines up the ‘{;}’ characters on the left under block-introduction keywords.
It’s not just old Haskell code that’s how you write Haskell if you want explicit braces. Well, mostly generate, but it’s still the idiomatic formatting (and when you generate you always generate braces because it’s easy to get layout subtly wrong when generating).
Haskell also does the whole
data Foo = Bar
| Baz
| Quux
foo = [ Bar
, Baz
, Quux
]
thing, makes sense to apply it to braces especially as they’re seen only very rarely. Single-line, yes, but not multi-line.
Might check out the Haskell layout rules.
Basically, when you leave out the ‘{’ then Haskell uses your intendation to insert ‘;}’ on later lines between the leading whitespace and the first token.
There some really old Haskell code out there that lines up the ‘{;}’ characters on the left under block-introduction keywords.
It’s not just old Haskell code that’s how you write Haskell if you want explicit braces. Well, mostly generate, but it’s still the idiomatic formatting (and when you generate you always generate braces because it’s easy to get layout subtly wrong when generating).
Haskell also does the whole
thing, makes sense to apply it to braces especially as they’re seen only very rarely. Single-line, yes, but not multi-line.