*Real World Haskell* Bryan O'Sullivan John Goerzen Don Stewart pub. O'Reilly 2009 (OreillyAndAssociates) (AnimalBook)

ISBN 9780596514983 (See IsbnThirteenBug) http://oreilly.com/catalog/9780596514983/

Also available on line: The newest, best, easiest and free-est way to learn HaskellLanguage. http://book.realworldhaskell.org/read/

*Plus* in HaskellLanguage monads.

On p.362-364 of this book, the authors introduce the notion of *mplus* withing a monad, with the comment on p.364 that *The name mplus does not imply addition*.

I had found this very confusing as an implementation I was looking at did something which was not addition and I could not understand why.

Does anyone know why *plus* is used for something which is not addition?

I have found this: http://www.haskell.org/haskellwiki/MonadPlus

Light is dawning. I have found the following on http://monads.haskell.cz/html/laws.html :

Continuing to use the Maybe monad as an example, we see that the Maybe monad is an instance of MonadPlus:

instance MonadPlus Maybe where mzero = Nothing Nothing `mplus` x = x x `mplus` _ = xThis identifies Nothing as the zero value and says that adding two Maybe values together gives the first value that is not Nothing. If both input values are Nothing, then the result of mplus is also Nothing.

So it is a logical addition rather than a numerical one.

It is good to talk things through even with people who are not listening yet. Another example of HowWikiWorks.

-- JohnFletcher

The title is an oxymoron :-P *thanks*

EditText of this page (last edited October 22, 2013) or FindPage with title or text search