Haskell: some and many

alternative-functor, applicative, combinators, haskell, some-and-many

Solution

They make sense when used as parser combinators.

`some` means that the parser is applied as many times as possible, but at least once.

`many` is similar, but allows for no parse as well, `return`ing `[]` in such case instead of failing.

In case of `Maybe`, `Just ...` never "fails", thus your parser `some $ Just 42` loops.

Problem

What are `some` and `many` in `Control.Applicative.Alternative` good for? If I write something like `some $ Just 42`, it seems to cause infinite recursion, which seems not very useful...

Original source

Related problems