Or

Disjunction (;/2), including its Cond -> Then ; Else if-then-else form. Implemented directly as a it.unibo.tuprolog.solve.primitive.Primitive rather than as a rule (unlike ,/2, see it.unibo.tuprolog.solve.concurrent.stdlib.rule.Comma) so that the two branches -- the condition/then pair, or first/second in the plain-disjunction case -- can each be solved with their own ConcurrentSolver instance, one of the few places in this module's standard library, besides the core :solve-concurrent FSM, where two independent sub-resolutions are combined explicitly.

Since it.unibo.tuprolog.solve.concurrent.stdlib.DefaultBuiltins registers this object under the same ;/2 signature as the Semicolon/if-then-else rules shared with the other resolution strategies (via it.unibo.tuprolog.solve.stdlib.CommonBuiltins), and primitives take precedence over rules (see it.unibo.tuprolog.solve.concurrent.fsm.StatePrimitiveSelection), this primitive always wins and those inherited rules are effectively unused here (see the // TODO removes rule for -> and ; from default builtins comment in DefaultBuiltins).

Throws

if either branch is not callable.

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard