Type Classes and Constraint Handling Rules
<|reference_start|>Type Classes and Constraint Handling Rules: Type classes are an elegant extension to traditional, Hindley-Milner based typing systems. They are used in modern, typed languages such as Haskell to support controlled overloading of symbols. Haskell 98 supports only single-parameter and constructor type classes. Other extensions such as multi-parameter type classes are highly desired but are still not officially supported by Haskell. Subtle issues arise with extensions, which may lead to a loss of feasible type inference or ambiguous programs. A proper logical basis for type class systems seems to be missing. Such a basis would allow extensions to be characterised and studied rigorously. We propose to employ Constraint Handling Rules as a tool to study and develop type class systems in a uniform way.<|reference_end|>
@article{glynn2000type,
    title={Type Classes and Constraint Handling Rules},
    author={Kevin Glynn, Martin Sulzmann, and Peter J. Stuckey},
    journal={arXiv preprint arXiv:cs/0006034},
    year={2000},
    number={TR2000/7},
    archivePrefix={arXiv},
    eprint={cs/0006034},
    primaryClass={cs.PL}
}