[Haskell-cafe] 'let' keyword optional in do notation?
Vo Minh Thu
noteed at gmail.com
Wed Aug 8 17:17:49 CEST 2012
2012/8/8 Martijn Schrage <martijn at oblomov.com>:
> Hi cafe,
>
> For a while now, I've been wondering why the 'let' keyword in a do block
> isn't optional. So instead of
>
> do ...
> let x = exp1
> y = exp2
> z <- exp3
> ...
>
> you could simply write
>
> do ...
> x = exp1
> y = exp2
> z <- exp3
> ...
>
> Where each sequence of let-less bindings is put in a separate binding group.
> I'm no parsing wizard, but I couldn't come up with any situations in which
> this would cause ambiguity. To me, the let-less version is easier on the
> eyes, more consistent with <- bindings, and also makes it less of a hassle
> to move stuff around.
>
> The above probably also holds for list/monad comprehensions, but the
> explicit let has never really bothered me there.
Hi,
This is not a parsing problem, but a scoping one: try to run this program:
main = do
let x = y
y = 5
let a = b
let b = 6
print (x, y, a, b)
Cheers,
Thu
More information about the Haskell-Cafe
mailing list