What are the functions some and many in the Alternative type class useful for? Docs provide a recursive definition which I was unable to comprehend.
'some' and 'many' functions from the 'Alternative' type class
3k Views Asked by missingfaktor At
2
There are 2 best solutions below
Related Questions in HASKELL
- Cabal sandbox is using a global dependency. Could not resolve
- Haskell lens: let binding of Traversal'
- How can I parse fixed-length, non-delimited integers with attoparsec?
- Pipeline-like operation using TChan
- compile-time vs. run-time cost of Hamlet templates
- Date-time package in haskell - error in the current one, can't find an analog
- How does one debug infinite recursion in Haskell?
- Force GHC using local files
- List with random numbers in Haskell
- Changes in other elements based on listbox selections in threepenny-gui
- Multithreading and gtk2hs
- Operator section for applicative with <$> and <*>
- Unable to create a custom header to use it in "withManager"
- How do I reuse an intermediate value in chain of Haskell Either binds?
- Haskell, Tree problems
Related Questions in FUNCTIONAL-PROGRAMMING
- Access into a Binary Search Tree via a bound function in a function template
- Convert loop to Maybe monad
- Lazy concat in Immutable.js?
- Erlang syntax error unclear
- What is the type of the variable in do-notation here in Haskell?
- Lazy functions evaluation in swift
- Standard ML / NJ: Loading in file of functions
- First Object in Set<Future<Object>> that satisfies a predicate
- How to write a type that is isomorphic to Tree without nested lists?
- Functional way of doing a loop of operations on an array
- Good practice on how to store the result of a function for later use in R
- Apply a list of Functions to a Java stream's .map() method
- First word of binary string erlang
- Easier way to apply multiple arguments in Haskell
- scala : use of braces for a function when the parameter is a predicate
Related Questions in TYPECLASS
- How to Rewrite Function Using Context Bounds?
- Specifying a constraint for a class
- Resolving ambiguities for overloaded functions
- Existing constants (e.g. constructors) in type class instantiations
- Conversion from Function to sets of custom types
- Type class and dependent types
- Implicit not found when omitting empty argument list
- Persistent typeclass instances for existing libraries ADT's
- Haskell: `==' is not a (visible) method of class
- Instance of Show for lambda-abstraction ADT
- Typeclass instances for another typeclass in haskell
- What is the arrow in this instance declaration for?
- Illegal constraint in a superclass context (GHC 8.0.1)
- 'No type class instance was found' on multi-parameter type class
- Typeclass instantiated on every value of a data kind
Related Questions in SOME-AND-MANY
- What are Alternative's "some" and "many" useful for?
- Can the continuation monad transformer be given an Alternative instance with some and many?
- Haskell: some and many
- How to use the function `some`?
- Haskell - some, many implementation
- What do the "some" and "many" functions of Alternative do?
- What is the meaning of the definitions for the "some" and "many" functions in the Haskell Alternative
- Infinite loop when calling many on custom Parser
- why Alternative's some and many are infinite recursive functions in haskell
- 'some' and 'many' functions from the 'Alternative' type class
Related Questions in ALTERNATIVE-FUNCTOR
- Implementing try (look-ahead) and untilStop with parser combinators
- Haskell: Parsing an object that could be multiple types into one single type
- instance Alternative ZipList in Haskell?
- What are Alternative's "some" and "many" useful for?
- What’s an example of a Monad which is an Alternative but not a MonadPlus?
- Confused by the meaning of the 'Alternative' type class and its relationship to other type classes
- How to convert a failed computation to a successful one and vice versa
- Purely Applicative Parser using Alternative
- Can the continuation monad transformer be given an Alternative instance with some and many?
- For what Alt in Monoid instance needed?
- Could it be that (Alternative f, Foldable f) => Monad f?
- Haskell: some and many
- Why does the Alternative typeclass need to be a sub-class of Control.Applicative
- How to use the function `some`?
- Applicative parser stuck in infinite loop
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
someandmanycan be defined as:Perhaps it helps to see how
somewould be written with monadicdosyntax:So
some frunsfonce, then "many" times, and conses the results.many frunsf"some" times, or "alternatively" just returns the empty list. The idea is that they both runfas often as possible until it "fails", collecting the results in a list. The difference is thatsome fimmediately fails ifffails, whilemany fwill still succeed and "return" the empty list in such a case. But what all this exactly means depends on how<|>is defined.Is it only useful for parsing? Let's see what it does for the instances in base:
Maybe,[]andSTM.First
Maybe.Nothingmeans failure, sosome Nothingfails as well and evaluates toNothingwhilemany Nothingsucceeds and evaluates toJust []. Bothsome (Just ())andmany (Just ())never return, becauseJust ()never fails! In a sense they evaluate toJust (repeat ()).For lists,
[]means failure, sosome []evaluates to[](no answers) whilemany []evaluates to[[]](there's one answer and it is the empty list). Againsome [()]andmany [()]don't return. Expanding the instances,some [()]meansfmap (():) (many [()])andmany [()]meanssome [()] ++ [[]], so you could say thatmany [()]is the same astails (repeat ()).For
STM, failure means that the transaction has to be retried. Sosome retrywill retry itself, whilemany retrywill simply return the empty list.some fandmany fwill runfrepeatedly until it retries. I'm not sure if this is useful thing, but I'm guessing it isn't.So, for
Maybe,[]andSTMmanyandsomedon't seem to be that useful. It is only useful if the applicative has some kind of state that makes failure increasingly likely when running the same thing over and over. For parsers this is the input which is shrinking with every successful match.