==================================================================== Such that predicates ==================================================================== A for loop can be followed by a "|" and then a predicate. The predicate qualifies the use of the values from the iterator that follows the for. Think of the vertical bar "|" as the phrase "such that". :: for n in 0..4 | odd? n repeat output n 1 3 Type: Void This loop expression prints out the integers n in the given segment such that n is odd. A for loop can also be written :: for iterator | predicate repeat loopbody which is equivalent to: :: for iterator repeat if predicate then loopbody else iterate The predicate need not refer only to the variable in the for clause. Any variable in an outer scope can be part of the predicate. :: for i in 1..50 repeat for j in 1..50 | factorial(i+j) < 25 repeat output [i,j] [1,1] [1,2] [1,3] [2,1] [2,2] [3,1] Type: Void