add philip wadler: How to make ad-hoc polymorphism less ad hoc