
On 23/06/10 06:54, Christopher Done wrote:
I'm not sure how Alternative differs from MonadPlus, other than being defined for Applicative rather than Monad. They have the same laws (identity and associativity).
Importantly, MonadPlus must satisfy some laws for (>>=) and (>>), whereas Alternative must only satisfy laws for the new (<|>) operator. There are plenty of monads that do not satisfy the laws for MonadPlus (particularly the difficult mzero-being-right-zero law), but do satisfy the laws when defining their (<|>) implementation. So they are different because MonadPlus overlaps with Monad, whereas Alternative does not (and thus, in my view, is much cleaner and more useful).
"Some" and "many" are probably motivated by their usefulness in parsers. Hence "optional", etc. I'm sure there are plenty of other uses for it.
I wrote a little about some and many in Alternative in this blog post: http://chplib.wordpress.com/2010/05/05/choose-anything-adding-an-alternative... (scroll down to the "Alternative" heading). I think they are mainly useful with a left-biased choice operator.
On 23 June 2010 05:22, Gregory Crosswhite
wrote: Hey everyone,
Could someone explain to me (or point me to a reference explaining) the purpose of the "some" and "many" methods of the Alternative class?
Also, there is a link posted in the documentation for Control.Applicative to a paper which describes the motivation behind the Applicative class; is there similarly a paper explaining the motivation behind the Alternative class? (The problem with Googling for "Alternative" is that this word is used a whole lot of the time, and very rarely does it refer to the Alernative class. :-) )
Cheers, Greg
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe