Polymorphism in typed languages is more complex, and will be the topic of the remainder of this chapter. As we indicated in an earlier slide, there are a number of different mechanisms that are described using this term. The ones we will consider are polymorphic variables, pure polymorphism (which occurs when you have functions with polymorphic arguments), overloading, overriding, which is a distinct idea from overloading, deferred method, and generics or templates.