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 byintroducing a separate context constraining the type variables in a typing judgement. This leads 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
Unification is the core of type inference algorithms for modern functional programming languages, li...
Type classes in Haskell are used to implement ad-hoc polymorphism, i.e. a way to ensure both to the ...
Static typing is one of the most prominent techniques in the design of programming languages for mak...
We study the type inference problem for a system with type classes as in the functional programming ...
We describe the implementation of a type checker for the functional programming language Haskell tha...
Qualified types provide a general framework for constrained type systems, with applications includin...
This article presents a type system based on the Damas-Milner system [DM82], that supports overloadi...
AbstractThe Hindley/Milner discipline for polymorphic type inference in functional programming langu...
Qualified types provide a general framework for constrained type systems, with applications includin...
Languages supporting polymorphism typically have ad-hoc restrictions on where polymorphic types may ...
Type inference is a key component of modern statically typed programming languages. It allows progra...
to find the "best" or "most general" type (called the principal type in the case...
Haskell has a rich type system with various complementary, interacting and overlapping features. In ...
Many computer programs have the property that they work correctly on a variety of types of input; s...
AbstractThis paper describes a general theory of overloading based on a system of qualified types. T...
Unification is the core of type inference algorithms for modern functional programming languages, li...
Type classes in Haskell are used to implement ad-hoc polymorphism, i.e. a way to ensure both to the ...
Static typing is one of the most prominent techniques in the design of programming languages for mak...
We study the type inference problem for a system with type classes as in the functional programming ...
We describe the implementation of a type checker for the functional programming language Haskell tha...
Qualified types provide a general framework for constrained type systems, with applications includin...
This article presents a type system based on the Damas-Milner system [DM82], that supports overloadi...
AbstractThe Hindley/Milner discipline for polymorphic type inference in functional programming langu...
Qualified types provide a general framework for constrained type systems, with applications includin...
Languages supporting polymorphism typically have ad-hoc restrictions on where polymorphic types may ...
Type inference is a key component of modern statically typed programming languages. It allows progra...
to find the "best" or "most general" type (called the principal type in the case...
Haskell has a rich type system with various complementary, interacting and overlapping features. In ...
Many computer programs have the property that they work correctly on a variety of types of input; s...
AbstractThis paper describes a general theory of overloading based on a system of qualified types. T...
Unification is the core of type inference algorithms for modern functional programming languages, li...
Type classes in Haskell are used to implement ad-hoc polymorphism, i.e. a way to ensure both to the ...
Static typing is one of the most prominent techniques in the design of programming languages for mak...