How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The definition of Standard ML
Type classes and overloading resolution via order-sorted unification
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
On the complexity of ML typeability with overloading
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Report on the programming language Haskell: a non-strict, purely functional language version 1.2
ACM SIGPLAN Notices - Haskell special issue
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Type inference in the presence of overloading, subtyping and recursive types
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
ESOP'92 Symposium proceedings on 4th European symposium on programming
A simple applicative language: mini-ML
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parametric Overloading in Polymorphic Programming Languages
ESOP '88 Proceedings of the 2nd European Symposium on Programming
HOPE: An experimental applicative language
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Semantics of type classes revisited
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Open and closed scopes for constrained genericity
Theoretical Computer Science
Type classes with more higher-order polymorphism
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Explicit Graphs in a Functional Model for Spatial Databases
IEEE Transactions on Knowledge and Data Engineering
ASM '00 Proceedings of the International Workshop on Abstract State Machines, Theory and Applications
Type-checking multi-parameter type classes
Journal of Functional Programming
Constructive type classes in Isabelle
TYPES'06 Proceedings of the 2006 international conference on Types for proofs and programs
Code generation via higher-order rewrite systems
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Hi-index | 0.00 |
We study the type inference problem for a system with type classes as in the functional programming language Haskell. Type classes are an extension of ML-style polymorphism with overloading. We generalize Milner's work on polymorphism by introducing a separate context constraining the type variables in a typing judgement. This lead to simple type inference systems and algorithms which closely resemble those for ML. In particular we present a new unification algorithm which is an extension of syntactic unification with constraint solving. The existence of principal types follows from an analysis of this unification algorithm.