[Haskell-cafe] Re: Re: monad subexpressions
Neil Mitchell
ndmitchell at gmail.com
Fri Aug 3 13:04:31 EDT 2007
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
More information about the Haskell-Cafe
mailing list