None

Ross Paterson ross at soi.city.ac.uk
Thu Oct 16 22:06:01 EDT 2003


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 ++.


More information about the Hugs-Bugs mailing list