[Haskell-cafe] Control.Alternative --- some and many?

Neil Brown nccb2 at kent.ac.uk
Wed Jun 23 05:36:25 EDT 2010

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: 
(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<gcross at phys.washington.edu>  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 at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list