Non-deterministic choice.
Non-deterministic choice. Normally, construct a strategy that
first applies either this strategy or the given strategy. If it
succeeds, succeed with the resulting term. Otherwise, apply q.
Currently implemented as deterministic choice, but this behaviour
should not be relied upon.
When used as the argument to the <
conditional
choice combinator, +
just serves to hold the two
strategies that are chosen between by the conditional choice.
Conditional choice: c < l + r.
Conditional choice: c < l + r. Construct a strategy that first applies this strategy (c). If it succeeds, apply l to the resulting term, otherwise apply r to the original subject term.
Sequential composition.
Sequential composition. Construct a strategy that first applies this strategy. If it succeeds, then apply q to the new subject term. Otherwise fail.
Deterministic choice.
Deterministic choice. Construct a strategy that first applies this strategy. If it succeeds, succeed with the resulting term. Otherwise, apply q to the original subject term.
Apply this strategy to a term, producing either a transformed term or None, representing a rewriting failure.
Apply this strategy to a term, producing either a transformed term or None, representing a rewriting failure.
Helper class to contain commonality of choice in non-deterministic choice operator and then-else part of a conditional choice. Only returned by the non-deterministic choice operator.