The Haskell 98 Report has (in 3.14):
exp -> do { stmts } (do expression)
stmts -> stmt1 ; ... ; stmtn (n>=0)
stmt -> exp
| pat <- exp
| let decls
| (empty statment)
which allows the following:
do {}
do {let x = 5}
do {x <- return 5}
However the translation rules require that the last non-empty stmt
be an exp, which seems very sensible. I suggest
exp -> do { body } (do expression)
body -> stmt1 ; ... stmtn ; exp {;} (n>=0)
- RE: Haskell 98 Report: do expression syntax Ross Paterson
- RE: Haskell 98 Report: do expression syntax Simon Peyton-Jones
