@InProceedings{assoc05, author = {Manuel M. T. Chakravarty and Gabriele Keller and Simon Peyton Jones and Simon Marlow}, title = {Associated types with class}, booktitle = {POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT sysposium on Principles of programming languages}, year = {2005}, abstract = {Haskell's type classes allow ad-hoc overloading, or typeindexing, of functions. A natural generalisation is to allow type-indexing of data types as well. It turns out that this idea directly supports a powerful form of abstraction called associated types, which are available in C++ using traits classes. Associated types are useful in many applications, especially for self-optimising libraries that adapt their data representations and algorithms in a type-directed manner. In this paper, we introduce and motivate associated types as a rather natural generalisation of Haskell's existing type classes. Formally, we present a type system that includes a type-directed translation into an explicitly typed target language akin to System F; the existence of this translation ensures that the addition of associated data types to an existing Haskell compiler only requires changes to the front end. }, url = {http://www.haskell.org/~simonmar/papers/assoc.pdf}, doi = {http://doi.acm.org/10.1145/1040305.1040306}, isbn = {1-58113-830-X}, pages = {1--13}, location = {Long Beach, California, USA}, publisher = {ACM Press} }