itsme213 said:
> - have you thought about the connection to duck typing?

Christian Neukirchen said:
> How does it compare to the ML style of argument matching, btw?

I think you're both talking about the same thing here; the ability to
dispatch to different methods depending on the types of method
parameters other than just the receiver. I have thought a good deal
about this, in fact, but not exactly in the context of Reg.

The best way to do this means extending the syntax, but here's a quick
and dirty way reg might be used to do it:

#warning! won't work yet; no substitutions in reg yet
module Scoundrels
  def Scoundrels::bill(*args) #dispatcher for all the bills
    send +[
      -[Lockpick]>>:bill_the_picklock |
      -[FakePassport,Cash,ShoePhone]>>:bill_the_spy |
      -[Gun.reg+1, Knife]>>:bill_the_murderer |

-[Laptop,Oscilloscope.reg|CellPhone|Password.reg*5]>>:bill_the_hacker
     ].match(args.dup).first, args
  end

  #definitions of the various bills omitted
end

Then you could do:
  Scoundrel.bill(LockPick.new)  #invokes bill_the_picklock
  Scoundrel.bill(Laptop.new, CellPhone.new)   #invokes bill_the_hacker

Maybe this could be made easier. The syntax takes a little getting used
to, let us say.

This is great; people are coming up with angles I never thought of.