Fold using Alternative
If you have a left-biased alternative operator <|>
, then choice
performs left-biased choice from a list of alternatives, which means that
it evaluates to the left-most non-empty
alternative.
If the list is empty, or all values in it are empty
, then it
evaluates to empty
.
Example:
-- given a parser expression like:
expr = literal <|> keyword <|> funcall
-- choice lets you write this as:
expr = choice [literal, keyword, funcall]
Note: In Haskell, choice
is called asum
.
A fused version of choice and map.
guard a
is pure ()
if a
is True
and empty
if a
is False
Lift a function to an applicative
Lift a two-argument function to an applicative
Lift a three-argument function to an applicative
Conditionally execute an applicative expression