>>>>> "C" == Christoph  <chr_news / gmx.net> writes:

C> c)  Determine if  a ``most specific '' specialization  on
C>      argument type (+ self type) exists. In case of ambiguities
C>      call  a method like ambiguous_method_call .
C>      (default action is to  raise an Exception) . This is Cecil's
C>      and Dylan's way I believe.

 The ambiguity can be seen when ruby define the method, except for the
 example given in [ruby-talk:51426] where it can be detected only at
 runtime. 

pigeon% cat d.rb
#!./ruby -w
class B < Array; end
module M
   def a(Object o) end
end

class A
   include M
   def a(Array a) next_method; end
end

module M
   def a(B a) end
end

A.new.a(B.new)
pigeon% 

pigeon% d.rb
./d.rb:9: warning: Ignoring : method `a' more specific in M
pigeon% 


Guy Decoux