[Haskell-cafe] do

Cale Gibbard cgibbard at gmail.com
Mon Dec 3 09:25:06 EST 2007


There are a few rules by which do-syntax is translated into a chain of
bind (>>=) operations:

They are, (approximately):

do { x } = x
do { x ; <stmts> } = x >> do { <stmts> }
do { v <- x ; <stmts> } = x >>= \v -> do { <stmts> }
do { let { <decls> } ; <stmts> } = let <decls> in do { <stmts> }

The meaning of >>= depends on which monad you're using.

I've written a high-level overview about monads, including a section
about do-notation here:
http://haskell.org/haskellwiki/Monads_as_computation

I've also written
http://haskell.org/haskellwiki/Monads_as_containers
which I've found is an approach which is often fairly useful for those
starting out.

If you're just interested in how IO is handled in Haskell, I can offer
a quick blurb about how we think about that here, which I recommend
regardless since it's short:
http://haskell.org/haskellwiki/Introduction_to_IO

 - Cale

On 03/12/2007, PR Stanley <prstanley at ntlworld.com> wrote:
> Hi
> I've probably asked about the do construct, if that's the right
> label. Unfortunately I'm still not quite sure of its role and more
> specifically its syntax. Something to do with generators perhaps? A
> description plus some examples would be most gratefully received.
> Thanks, Paul
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list