```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

```