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
- Typeclass projections as inheritance
- How to generate all possible matrices given a number n in Haskell
- Is there a way to get `cabal` to detect changes to non-Haskell source files?
- How to have fixed options using Option.Applicative in haskell?
- How can I create a thread in Haskell that will restart if it gets killed due to any reason?
- Automatic Jacobian matrix in Haskell
- Haskell writing to named pipe unexpectedly fails with `openFile: does not exist (No such device or address)`
- Why does Enum require to implement toEnum and fromEnum, if that's not enough for types larger than Int?
- Non-exhaustive patterns in function compress
- How to get terms names of GADT in Template Haskell?
- Implementing eval() function with Happy parser generator
- How to count the occurences of every element in a list in Haskell fast?
- In Haskell, what does `Con Int` mean?
- Extract a Maybe from a heterogeneous collection
- Haskell, Stack, importing module shows error "Module not found"
Related Questions in FUNCTIONAL-PROGRAMMING
- On Google Sheets (and only built-in functions allowed, no Google Apps Script) Is it possible to simulate pipe function?
- Why does Enum require to implement toEnum and fromEnum, if that's not enough for types larger than Int?
- Is there a functional way to map a list (N elements) to a list of sums of adjacent elements (N - 1 elements) in Kotlin?
- How to count the occurences of every element in a list in Haskell fast?
- Combine lists with absolute index in functional programming
- How to refactor a loop with iterator. (Returning from closure)
- In Haskell, what does `Con Int` mean?
- Setting up different Java class fields value by a single value on some counter value
- Why doesn't map read show (Integer) work to separate each value in a string of Integers?
- Grouping by multiple fields and counting using in Java 8
- Variable capture: How variables behave in function closures
- Composing React Providers with Value props in Typescript
- How can atomicModifyIORef cause leaks? And why does atomicModifyIORef' solve the problem?
- How can I change XMobar's Kbd monitor plugin such that clicking on it loops throught the layouts?
- How to get success or error data without folding the response while using fpdart in flutter?
Related Questions in TYPECLASS
- Typeclass projections as inheritance
- Why does Enum require to implement toEnum and fromEnum, if that's not enough for types larger than Int?
- Scala refined types and type class derivation (Shapeless)
- How is the Foldable instance of (,) useful?
- The `specialize` tatic in Coq does not work well with typeclasses?
- Why does Cabal, unlike GHC, not automatically enable GeneralizedNewtypeDeriving if I explicitly enabled DerivingStrategies?
- Scala avro4s, define SchemaFor for common trait?
- freezed package class return - "type 'Null' is not a subtype of type 'String' in type cast"
- How to specify a type family with multiparameter injectivity?
- Why does Data.Dynamic contain a witness instead of a typeclass constraint?
- How do you define a type class for a union of types?
- Error when implementing a typeclass instance for a function
- How to create a custom made function instance of Eq and Ord
- GHC not deriving typeclass instances based on input type
- Is there a typeclass that changes the shape of a hierarchy?
Related Questions in SOME-AND-MANY
- What do the "some" and "many" functions of Alternative do?
- Infinite loop when calling many on custom Parser
- How to use the function `some`?
- Haskell - some, many implementation
- Can the continuation monad transformer be given an Alternative instance with some and many?
- What is the meaning of the definitions for the "some" and "many" functions in the Haskell Alternative
- why Alternative's some and many are infinite recursive functions in haskell
- What are Alternative's "some" and "many" useful for?
- 'some' and 'many' functions from the 'Alternative' type class
- Haskell: some and many
Related Questions in ALTERNATIVE-FUNCTOR
- For what Alt in Monoid instance needed?
- Print `Control.Alternative.Free.Alt` type
- How to combine and then branch in MonadPlus/Alternative
- Haskell - Why is Alternative implemented for List
- Examples of "undoable" applicative functors?
- Is it possible to write an Alternative instance for Identity a if there's a Monoid for a?
- Using Logic monad to backtrack upon exception thrown with ExceptT
- Trouble understanding the source code of different instances of `MonadPlus` typeclass
- Why doesn't runConduit send all the data?
- An alternative Alternative for lists
- What do the "some" and "many" functions of Alternative do?
- Is every Alternative Monad Filterable?
- Pattern matching with Alternative empty or Applicative pure
- Haskell strategies for speculative execution of conditionals / Alternative
- Standard combinator to get first "non-empty" value from a set of monadic actions
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 # Hahtags
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.