On 9/20/06, Joel VanderWerf <vjoel / path.berkeley.edu> wrote:
> Austin Ziegler wrote:
> > On 9/20/06, Ola Bini <ola.bini / ki.se> wrote:
> >> The problem with "just use it", is that you will have no control over
> >> error handling in this case.
> >
> > This is demonstrably untrue. Duck typing is not about validation. It's
> > about trusting your callers to do the right thing -- and then doing
> > the right thing when they don't.
>
> To extend Austin's point a little: In ruby, it really has to be this
> way. What if an object responds to a message by way of method_missing?
> There's no easy way to validate that.

Of course the whole scheme really relies on the library writer to
provide very good documentation - they have to (re)discover and
document every method call they perform on every object passed to
them. Unless they fall back to the old ways and say "this method
expects a string, and all that that implies". Which doesn't help the
user of the library much because say they want to pass in something
else that works a little like a string, but does not exhaustively
support every method the String class supports? They have to read the
library source and discover and document every method call on the
object...