View Source Guesswork.Ast.Stop (Guesswork v0.6.0)
Defines when the search for answer sets should stop. Note that negation is not considered here.
Meeting Stop Conditions
Stop conditions can be met either through substitution or unification.
Substitution is relatively simple; if all of the inputs are concrete when
Guesswork.Ast.Statement.resolve/2
is called, an empty stream is returned if
the stop condition is met.
However, if the stop condition is resolved met unification, one must be careful to define the condition (at least partially) in concrete terms. Otherwise, the stop coniditon will never be met and the query will result in an infinate stream.
Summary
Types
@type t() :: %Guesswork.Ast.Stop{ func: Guesswork.Answer.Computation.func(), inputs: [Guesswork.Ast.Term.entity() | Guesswork.Ast.Variable.t()] }
Functions
@spec new( [Guesswork.Ast.Variable.t() | Guesswork.Ast.Term.entity()], Guesswork.Answer.Computation.func() ) :: t()