2008/11/10 Johannes Waldmann <[EMAIL PROTECTED]>:
> Well, my original post wasn't that negative ...
>
> Indeed "then f [by e]" seems a nice idea *but*
> the point was that I'd like to have this in any monad.
>
> The type of f in "then f" should be  m a -> m b, not just m a -> m a,
> because then you don't need special syntax for "group",
> which is somewhat like [a] -> [[a]] ?

Hi Johannes,

I'm not sure what it would mean for f to have type m a -> m b. The
point of the parametric polymorphism in the type forall a. m a -> m b
is that the "f" function is guarenteed not to inspect the structure of
the (list/monad) element. This allows the compiler to choose a
representation for the intermediate tuples used in the desugaring
freely. The "group" syntax really does desugar differently from "then"
because the compiler inserts an extra unzip_n that the user could not
have written, given that parametric polymorphism.

All the best,
Max
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to