Update on GHC 6.12.1
kahl at cas.mcmaster.ca
kahl at cas.mcmaster.ca
Wed Oct 28 20:09:01 EDT 2009
Simon Peyton Jones wrote:
>
> Recursive do-notation.
> ~~~~~~~~~~~~~~~~~~~~~~
> The change is this. Instead of writing
>
> mdo { a <- getChar
> ; b <- f c
> ; c <- g b
> ; putChar c
> ; return b }
>
> you would write
>
> do { a <- getChar
> ; rec { b <- f c
> ; c <- g b }
> ; putChar c
> ; return b }
>
> That is,
> * 'mdo' is eliminated
> * 'rec' is added, which groups a bunch of statements
> into a single recursive statement
> See http://hackage.haskell.org/trac/ghc/ticket/2798
>
> This 'rec' thing is already present for the arrow notation, so it
> makes the two more uniform. Moreover, 'rec' lets you say more
> precisely where the recursion is (if you want to), whereas 'mdo' just
> says "there's recursion here somewhere". Lastly, all this works with
> rebindable syntax (which mdo does not).
>
> The main question is not whether to make this change, but when.
This last point notwithstanding,
I find the scoping rules very unintuitive!
(b and c appear to escape their apparently nested scope.)
Wolfram
More information about the Glasgow-haskell-users
mailing list