ad hoc polymorphism

applying polymorphic functions to arguments of different types