On 7 October 2010 12:04, Sebastiaan Visser <[email protected]> wrote:
> What exactly are the benefits of Monad comprehensions over, for example, the 
> do-notation or idioms?

List comprehensions are just a specialisation of the do-notation for lists.
Monad comprehensions are a generalisation for arbitrary monads of this
specialisation :-)

I don't think there are major benefits to this. The major change is
that they "look like" lists (which might be important if you are
writing a SQL library) and the final "return" is hoisted into the head
of the comprehension [HERE | with, the, usual, do, notation, sequence,
here].

> I'm not fully aware of what Monad comprehensions would offer in general, but 
> aren't most comprehensions directly translatable to applicative style?

Monadic style, not applicative style.

> For example:
>
>  [(x, y) | x <- xs | y <- ys]  -- Comprehension.

This computes a zip of xs and ys.

>  (,) <$> xs <*> ys             -- Applicative style.

This actually computes a cartesian product instead.

You are right in spirit because:

  [e | qs] ==> do { qs; return e }

For example:

  [(x, y) | x <- xs, y <- ys] ==> do { x <- xs; y <- ys; return (x, y) }

Cheers,
Max
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to