
On Fri, Aug 29, 2008 at 6:41 AM, Maurício
Hi,
http://haskell.org/haskellwiki/Keywords says that:
------------- [do is a] syntactic sugar for use with monadic expressions. For example:
do { x ; result <- y ; foo result }
is shorthand for:
x >> y >>= \result -> foo result -------------
I did some tests hiding Prelude.>> and Prelude.>>= and applying >> and >>= to non-monadic types, and saw that 'do' would not apply to them. So, I would like to add the following to that text:
It sounds like you tried to redefine (>>) and (>>=) and make 'do' use the new definitions. This is not possible, regardless of what types you give (>>) and (>>=). If you want to define (>>) and (>>=), do so for a particular instance of Monad.
------------- as long as proper types apply:
x :: Prelude.Monad a y :: Prelude.Monad b foo :: b -> Prelude.Monad c -------------
Is that correct (Haskell and English)?
Thanks, Maurício
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe