[ 1, "abc", 2, 3, 100, 4 ]
iterate
{
-> element
element is(INTEGER) ifnot continue // skip element "abc"
element 10 > if break // terminate as soon as element 100 is reached. . . // only elements 1, 2, and 3 are seen here
}
//
---
// Example for iteration over an InstantView® vector:
Var(vector, elem, pivot)
Define(qsort)
-> vector
vector Cardinality 2 < if
{ // a vector with 0 or 1 elements is sorted
vector return
}
[] # // to become S1 = { elem | elem Î vector, elem >= pivot }
[] # // to become S2 = { elem | elem Î vector, elem < pivot }
vector iterate
{
Index 0 = if { -> pivot, continue } // select 0th element as pivot element
-> elem
elem pivot < if { elem Over Insert } // insert elem < pivot into S1
else { Over elem Swap Insert } // insert elem >=pivot into S2
}
// apply qsort to S1 and S2 and the result is S1sorted + { pivot } + S2sorted
[pivot] # Swap qsort Swap | // qsort(S1) + { pivot }
Swap qsort |; // + qsort(S2)
. . .
[3.5m, 4cm, 0.01km, 2.11m] qsort // sorting a vector of CX_VALUE objects
["gamma", "alfa", "omega", "epsilon"] qsort // sorting character strings