About duck typing: Duck typing is aided by habitually not testing for the type of arguments in method and function bodies, relying on documentation, clear code and testing to ensure correct use. ...
Most examples of using assertions that I find seem to be about dealing with runtime errors, such as out of memory conditions. That's not what I'm after. One good example of using assertions to detect ...