Type classes: An exploration of the design space (1997)

by S Peyton Jones, M P Jones, E Meijer