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               |
==================================================

_______________________________________________
Hugs-Bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/hugs-bugs

Reply via email to