On 19 Jul 2003 at 17:41, Brian Candler wrote:

> Both versions generate a temporary copy of the array, e.g. self[1..-1] does
> that too. But you can avoid it:
> 
> module Enumerable
>   def ordered?
>     first = true
>     prev = nil
>     each do |item|
>       if first
>         first = false
>       else
>         return false if prev > item
>       end
>       prev = item
>     end
>     return true
>   end
> end

I'm not Dave Thomas :-) but you can also use inject here:

module Enumerable
  def ordered?
    inject { | last, item | return false unless last < item; item }
    true
  end
end

Regards,
Pit