None

Iavor Diatchki diatchki at cse.ogi.edu
Thu Oct 16 16:13:53 EDT 2003


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



More information about the Hugs-Bugs mailing list