Next: amb api random, Up: amb api [Index]
amb syntaxesThe following bindings are exported by the library (vicare
language-extensions amb).
Initialise the dynamic environment for a new amb search and in
such environment evaluates the ?body forms. Return the result of
the last form.
Install in the dynamic environment a custom handler for search tree
exhaustion. This syntax should be used in the body of
with-ambiguous-choices, but before the first use of amb.
?handler must be an expression evaluating to a thunk: such thunk
is called by amb whenever no more choices are available.
?thunk must be an expression evaluating to a thunk: it is
evaluated while the custom handler is installed.
Evaluate one of the ?expr expressions and return its result; save in the dynamic environment a continuation that can be reinstated to reject the result of this ?expr and try with the next ?expr. The ?expr arguments are tried in the given order: left to right.
If the result of evaluating an ?expr is a promise (produced by
delay): the promise is forced to produce the result.
When used with no arguments: reject the result of the most recent expr and reinstate the previous continuation to try the next expr.
When all the choices have been tried: raise a non–continuable exception
with condition object components &who, &message,
&amb-exhaustion.
It is an error if amb is used outside the dynamic environment
prepared by with-ambiguous-choices.