StateHalt

The terminal, unrecoverable EndState a branch reaches when exception could not be handled by any enclosing catch/3 (or was a timeout, see AbstractState): solution is a Solution.Halt. Reaching a StateHalt does not, by itself, stop sibling branches of the search tree -- it is up to the coroutine driving this branch (and, ultimately, whoever consumes the resolution's solution channel) to decide whether a halted branch should abort the whole resolution.

Constructors

Link copied to clipboard
constructor(exception: ResolutionException, context: ConcurrentExecutionContext)

Properties

Link copied to clipboard

The execution context this state operates on.

Link copied to clipboard
open override val exception: ResolutionException

The exception this state needs to propagate/handle.

Link copied to clipboard

Whether this state is a terminal one for the current branch, i.e. an EndState.

Link copied to clipboard
open override val solution: Solution

The Solution produced by this branch of the search tree.

Functions

Link copied to clipboard
open fun asEndState(): EndState

This state as an EndState, or null if isEndState is false.

Link copied to clipboard

This state as an EndState.

Link copied to clipboard
open override fun clone(context: ConcurrentExecutionContext = this.context): StateHalt

Returns a copy of this state, replacing context with the given one (defaulting to the current context).

Link copied to clipboard
open override fun next(): Iterable<State>

Computes every state this branch may transition into from here, one per alternative (matching clause, disjunct, primitive solution, ...) available at this point; empty only for EndStates. Each element is meant to be explored independently (and, in :solve-concurrent's solver, concurrently) of the others.