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 | ==================================================
_______________________________________________ Hugs-Bugs mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/hugs-bugs
