[Haskell-cafe] instance Monad (Except err)
tonymorris at gmail.com
Mon May 4 21:06:51 EDT 2009
Yes, however, ap is not equal to (<*>) for the given Applicative. I
don't believe such a monad is possible.
Neil Brown wrote:
> Martijn van Steenbergen wrote:
>> Mr. McBride and mr. Paterson define in their Applicative paper:
>>> data Except e a = OK a | Failed e
>>> instance Monoid e => Applicative (Except e) where ...
>> Sometimes I'd still like to use >>= on Excepts but this "feels" wrong
>> somehow, because it doesn't use monoids nicely like the Applicative
>> instance does. Are there any good reasons such a Monad instance
>> shouldn't be defined? Does it violate any laws, for example?
> Isn't the Except type just Either by another name? OK = Right, Failed
> = Left. Therefore the monad is just the same as the Either monad, and
> is useful as an error monad:
> instance Monad (Except e) where
> (OK x) >>= f = f x
> Failed e >>= _ = Failed e
> return = OK
> This obeys all the monad laws.
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe