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.
Cheers,
Martijn Schrage -- Oblomov Systems (http://www.oblomov.com)