Re: None
Iavor Diatchki <[email protected]>
| Newsgroups | gmane.comp.lang.haskell.hugs.bugs |
|---|---|
| Message-ID | <[email protected]> |
hello, Ross Paterson wrote: > On Thu, Oct 16, 2003 at 03:54:51PM -0400, Doug McIlroy wrote: > >>In Hugs 1.4, ++ was an operator of class Monad; in Hugs 98 it is >>an operator on lists. I've looked in the Hugs documentation and >>haven't found anything about the change (probably a failing of >>mine, not the documentation). >> >>Anyway, that breaks some code in an article that's been accepted >>for JFP, wherein I overloaded ++ by placing the operand type in >>class Monad. This doesn't work any more. >> >>I don't want to publish code that doesn't work, and I don't want >>to give up that overloading, which is completely natural. Can >>you shed any light on what happened between the two versions? >>Or offer an idea about how to rescue the overloading? > > > This was a change from Haskell 1.4 to Haskell 98, so it affects > all Haskell implementations (to save beginners using lists from > incomprehensible type errors). You'll need to put your type in > the class > > class (Monad m) => MonadPlus m where > mzero :: m a > mplus :: m a -> m a -> m a > > and use `mplus` instead of ++. if you really want to use '++' instead of 'mplus' you could: import Prelude hiding ((++)) x ++ y = mplus x y hope this helps iavor -- ================================================== | Iavor S. Diatchki, Ph.D. student | | Department of Computer Science and Engineering | | School of OGI at OHSU | | http://www.cse.ogi.edu/~diatchki | ==================================================