Sorry, I forgot the main question I was raising.

Even if we need something other than mdo, do we need to make a distinction
between do and mdo? If left tightening is satisfied then do and mdo are
equivalent for nonrecursive blocks. If we are willing to give up shadowing
a compiler could translate recursive blocks with mfix and non-recursive
blocks without. Personally I don't like shadowing, and especially don't
like reursive bindings some places and shadowing in others.

On the necessity of rec syntax, how is a statement like
 do rec binds1
    rec binds2
    stmts
different from
 do BV1 <- mdo binds1
               return BV1
    BV2 <- mdo binds2
               return BV2
    stmts
where BVn is a tuple of all the variables bound in bindsn.

Brandon

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to