On Fri, Aug 29, 2008 at 6:41 AM, Maurício <[EMAIL PROTECTED]> wrote:
> 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 > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
