($$) [Choice] 
Shortcut for
Choice.app

(++) [Choice] 
Infix version of
Choice.mplus

(<>) [Choice] 
Infix version of
Choice.interleave

(>>) [Choice] 
Infix version of
Choice.fair_bind

(>>=) [Choice] 
Infix version of
Choice.bind

A  
app [Choice] 
Applicative instance

B  
bind [Choice] 
Monadic bind.

C  
combinations [Choice.Array]  
combinations [Choice.List] 
Combinations of
n elements of the list

cons [Choice.Enum] 
Add an element at the head of the list

cons [Choice]  cons x c is a shortcut for return x ++ c

cons1 [Choice.Enum] 
deterministic cons

count [Choice.Enum] 
Number of distincts enumerations

count [Choice] 
Number of solutions

D  
delay [Choice] 
Delay the computation (the closure will be called in each branch
that uses the choice point

E  
empty [Choice.Enum] 
Empty iterator

exists [Choice]  
F  
fail [Choice] 
Fail to yield a solution.

fair_bind [Choice] 
Fair version of
Choice.bind .

filter [Choice] 
Only keep the solutions that satisfy the given predicate.

fmap [Choice] 
Special case of
Choice.bind , with only zero or one possible
output choices for each input choice.

fold [Choice] 
Fold over all solutions

forall [Choice]  
from_fun [Choice] 
Call the function to get alternative choices.

I  
interleave [Choice] 
Same as
Choice.mplus , but fair, ie it enumerates solutions
alternatively from its first and second arguments.

is_empty [Choice] 
return
true iff the alternative stream is empty (failure)

ite [Choice]  ite cond th el enumerates the choices of cond .

iter [Choice] 
Enumerate solutions, until none remains, or the callback returns
false
to signal it has had enough solutions

L  
lift [Choice]  
lift2 [Choice]  
liftFair [Choice]  
liftFair2 [Choice]  
M  
map [Choice] 
Map solutions to other solutions

mplus [Choice]  mplus a b enumerates choices from a , then choices from b .

N  
next [Choice.Enum] 
choose the next element

O  
of_list [Choice.Enum] 
Simply enumerate the elements of the list

of_list [Choice] 
Multiple returns.

once [Choice] 
Retain at most one solution (drop alternatives).

P  
permutations [Choice.Array]  
permutations [Choice.List] 
Enumerate the items of the list in any order

product [Choice] 
Cartesian product of two choices

pure [Choice]  
R  
return [Choice] 
Return a value, and succeed

run_all [Choice] 
All the solutions (in reverse order)

run_n [Choice] 
The
n first solutions, in reverse order.

run_one [Choice] 
Run until we get one answer (or a failure)

S  
suffixes [Choice.List] 
Suffixes of the list

T  
take [Choice] 
Retain at most
n solutions

to_list [Choice] 
All the solutions (in correct order)

to_list_list [Choice.Enum] 
Conversion to a list of possibilies

to_lists [Choice.Enum] 
Conversion to a choice of lists

Z  
zip [Choice.Enum] 
Combine every element of the first enumeration with every
element at the same position in the second enumeration.
