Object-oriented style overloading for haskell

Citations of this article
Mendeley users who have this article in their library.


Haskell has a sophisticated mechanism for overloading identifiers with multiple definitions at distinct types. Object-oriented programming has a similar notion of overriding and overloading for methods names. Unfortunately, it is not possible to encode object-oriented overloading directly using Haskell overloading. This deficiency becomes particularly tiresome when Haskell programs wish to call methods imported from an object-oriented library. We present two refinements of Haskell's type class system: Closed classes and overlapping instances. We demonstrate how we may exploit the refined system so as to be able to encode object-oriented classes within Haskell. This encoding allows us to mimic, within Haskell, the overloading resolution rules employed by object-oriented languages without the need for additional type annotations or name mangling. As a consequence, object-oriented class libraries are very convenient to import and use within Haskell. We thank Don Syme, Nick Benton, Andrew Kennedy, and the anonymous reviewers, for many helpful comments. © 2001 Published by Elsevier B.V.




Shields, M., & Peyton Jones, S. (2001). Object-oriented style overloading for haskell. In Electronic Notes in Theoretical Computer Science (Vol. 59, pp. 89–108). https://doi.org/10.1016/S1571-0661(05)80455-4

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free