In message "[ruby-talk:03113] Min and max?"
    on 00/06/06, Aleksi Niemel<aleksi.niemela / cinnober.com> writes:
>First I consider to add it to Numeric, but then I wrote something like
>
>module Kernel
>  def min(a, b)
>    if a < b
>      a
>    else
>      b
>    end
>  end
>end
>
>Actually I can't say min(a,b) is much more beautiful compared to [a,b].min()
>but at least you don't have to know anything about arrays when using it and
>I expect it to be faster.
>
>Maybe the implementation should include the block version allowing c =
>min(a,b){|a,b| a.foo() < b.bar()}.

What do you think about putting mathfunc.rb including function 
representation like those to RAA?

BTW, Maybe I will define min as follows, 

  module Math
    def pickup0(symbol, *arg, &blk)
      enum = arg.find_all{|a| a.is_a? Enumerable}
      sing = arg - enum
      r0 = enum.collect{|e| Math::pickup0(symbol, *e.to_a, &blk)}
      sing = sing.collect{|s| [yield(s),s]} if iterator?
      res = (sing + r0).send(symbol)
    end

    def pickup(symbol, *arg, &blk)
      res = Math::pickup0(symbol, *arg, &blk)
      if res.is_a? Array
        res.pop
      else
        res
      end
    end

    def min(*arg, &blk)
      Math::pickup(:min, *arg, &blk)
    end

    def max(*arg, &blk)
      Math::pickup(:max, *arg, &blk)
    end

    module_function :min, :max, :pickup, :pickup0
  end

  if __FILE__ == $0
    a = [2,4,3]
    b = [5,-1,-3]
    p Math::min(1,2,3)              #=>  1
    p Math::min(a)                  #=>  2
    p Math::max(a)                  #=>  4
    p Math::min(a,b)                #=> -3
    p Math::max(a,b)                #=>  5
    p Math::max(a,b){|i| 1.0/i**2}  #=> -1
  end

-- gotoken