The or operator on Boolean values.
Exp₁ || Exp₂
The or operator on Boolean values defined as follows:
Boolean operators have short circuit semantics: only those operands are evaluated that are needed to compute the result. In the case of the
|| operator, the result is
Exp₁ evaluates to
Exp₂ is evaluated to determine the result.
|| will backtrack over its argument expressions until it can find an evaluation that is
true, unless there is none.
Variable assignments as a result of matching or generator expressions under a
|| are visible outside the context of the operator, but only if the context is conditional, such as an if-then-else or a for loop. Note that it is statically required that both sides of an
|| introduce the same variable names of the same type.
rascal>false || true;
rascal>(i <- [1,2,3,4] && i % 2 == 0) || false
rascal>for ((i <- [1,2,3,4] && i % 2 == 0) || false)
>>>>>>> println("true for <i>");
true for 2
true for 4