Generates an Iterator whose elements are sorted by the function

passed in argument.

class Person
      var name: String
end

def get_name(p: Person) do return p.name

var ps = [new Person("Turing"), new Person("Curry"), new Person("Alfredo")]
var ordered_names = ps.iterator.order_by(&get_name).map(&get_name).to_a
assert ordered_names == ["Alfredo", "Curry", "Turing"]

Property definitions

functional :: iter_extras $ Iterator :: order_by
        # Generates an `Iterator` whose elements are sorted by the function
        # passed in argument.
        #
        # ~~~~nitish
        # class Person
        #       var name: String
        # end
        #
        # def get_name(p: Person) do return p.name
        #
        # var ps = [new Person("Turing"), new Person("Curry"), new Person("Alfredo")]
        # var ordered_names = ps.iterator.order_by(&get_name).map(&get_name).to_a
        # assert ordered_names == ["Alfredo", "Curry", "Turing"]
        # ~~~~
        fun order_by(f: Fun1[E, Comparable]): OrderedIter[E]
        do
                return new OrderedIter[E](self, f)
        end
lib/functional/iter_extras.nit:209,9--226,11