>   def foo(bar, baz, bur)
>     # something
>   end
>   signature(:foo, String, Integer, Symbol)

That's pretty close really. If you can do this (w/o Binding.of_caller
though b/c it's too fragile).

   def foo(bar, baz, bur)
     signature String, Integer, Symbol
     # something
   end

Hmm... how about something like this:

   def foo(bar, baz, bur)
     signiture { coerce String, Integer, Symbol }
     # something
   end

The block would return a spical Signiture object that can be used by
apply the set of conditions on the arguments. In this case the args are
coerced, alternatively they could be coverted (to_s rather then to_str)
or just perhps amde to throw an argument error if not matching, etc.
I'm sure there's a variety of argument conditions that can be defined.
The use of the block allows us to get hold of the methods binding w/o
Binding.of_caller.

T.



T.