Skip to content

'let' keyword optional in do notation

Would it be possible to make the 'let' keyword in a do block 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.

I've also posted the idea on Haskell cafe: http://www.mail-archive.com/haskell-cafe@haskell.org/msg100541.html

Trac metadata
Trac field Value
Version 7.6.1-rc1
Type FeatureRequest
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information