type class

type system construct for ad-hoc polymorphism