Hi > > Can you combine let and do? > > > > do let x = (<- a) > > f x > > Right. In effect, as a matter of fact, the notation > > x <- a > > would become equivalent to > > let x = (<- a)
Hmm, interesting. Consider: let x = 12 let x = (<- x) Currently, in let x = ... the x is in scope on the right hand side. Now it isn't. Changing the order of evaluation with syntactic sugar seems fine, changing the lexical scoping seems nasty. Perhaps this is a reason to disallow monadic expressions in a let. > > Our "best guess" is that all monadic bindings get floated to the > > previous line of the innermost do block, in left-to-right order. > > Monadic expressions in let statements are allowed. Outside a do block, > > monadic subexpressions are banned. > > Sure. SPJ mentioned that you wouldn't promote (<- x) past a lambda. > I'm not convinced (it seems to fall into the same category as the if > statement), but it's worth considering. I'm not convinced either, a nice concrete example would let people ponder this a bit more. What is nice to note is that all your answers to my questions matched perfectly with what I thought should happen. Thanks Neil _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe