@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://community.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}
}