バグだと思いますが、何がわるいんでしょう?

    % ruby -e '
    class Array
      def foo
	(collect{|e|[e,yield(e)]}).sort{|a,b| a[1]<=>b[1]}
      end
      def bar
	aa = collect{|e|[e,yield(e)]}; aa.sort{|a,b| a[1]<=>b[1]}
      end
    end
    p [[1,1],[2,2],[3,3]].foo{|x| x}
    p [[1,1],[2,2],[3,3]].bar{|x| x}
    '
    [[[1, 1], 0], [[2, 2], 0], [[3, 3], 0]]
    [[[1, 1], [1, 1]], [[2, 2], [2, 2]], [[3, 3], [3, 3]]]

--
			   稲葉 浩人 (inaba / st.rim.or.jp)