OK, I'm not a programmer and never will be but the phrase 'duck typing' is so off-the-wall that I just have to ask what the hell it means.
If it looks like a duck, walks like a duck, quacks like a duck, then for all purposes it's a duck.
In my understanding, duck typing doesn't require the explicit declaration of "is-a" relationships in a class system. If a type (or object, depending on the language) fulfills sufficient requirements, it can be considered as a sub-class or object of another type. Depending on the language, the requirements may be expressed by interfaces, prototypes, pattern matching or some other means.