Task

Select certain elements from an Array into a new Array in a generic way.



To demonstrate, select all even numbers from an Array.

As an option, give a second solution which filters destructively,
by modifying the original Array rather than creating a new Array.




 
use Structure;
 
bundle Default {
  class Evens {
    function : Main(args : String[]) ~ Nil {
      values := IntVector->New([1, 2, 3, 4, 5]);
      f := Filter(Int) ~ Bool;
      evens := values->Filter(f);
 
      each(i : evens) {
        evens->Get(i)->PrintLine();
      };
    }
 
    function : Filter(v : Int) ~ Bool {
      return v % 2 = 0;
    }
  }
}
 