[Haskell-cafe] Control.Alternative --- some and many?
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. :-) )
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe