Lade...
 

iterate (Beispiele)

Var (element)

[ 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