A first-class approach to genericity
a programmer ' s reduction semantics for classes and mixins .