>>>>> "H" == HarryO <harryo / zipworld.com.au> writes: H> I was reading last night about perl's multimethods module and thought it H> would be interesting to see if that approach was do-able in Ruby. The approach of the P language is weird (bad syntax for me) and *slow*. If you really want to look at multi-methods, look at dylan or parasitic method of j*v* Just an example (it's important to see that next_method is a private method) pigeon% cat b.rb #!./ruby class AA < Array end class A def tt(Array a) yield "Array" next_method end def tt(AA a) yield "AA" next_method end def tt(String a) yield "String" next_method end private def tt(Enumerable a) yield "Enumerable" end end p A.instance_methods p A.private_instance_methods a = A.new a.tt(AA.new 1, 2) {|i| puts "received #{i}" } a.tt("string") {|i| puts "received #{i}" } a.tt(1 .. 2) pigeon% pigeon% b.rb ["tt"] ["next_method", "tt"] received AA received Array received Enumerable received String received Enumerable ./b.rb:31: private method `tt' called for #<A:0x401a5ba4> (NameError) pigeon% Guy Decoux