Papers by Cristiano Vasconcellos
The introduction of multi-parameter type classes in Haskell has been hindered because of problems... more The introduction of multi-parameter type classes in Haskell has been hindered because of problems associated to ambiguity, which occur due to the lack of type specialization during type inference. This paper proposes a minimalist, simple solution to this problem, which requires only a small change to the type inference algorithm and to what has been considered ambiguity in Haskell. It does not depend on the use of programmer specified functional dependencies between type class parameters nor any other extra mechanism, such as associated types. A type system and a type inference algorithm, sound and complete with respect to the type system, are presented.
The introduction of multi-parameter type classes in Haskell has been hindered because of problems... more The introduction of multi-parameter type classes in Haskell has been hindered because of problems associated to ambiguity, which occur due to the lack of type specialization during type inference. This paper proposes a minimalist, simple solution to this problem, which requires only a small change to the type inference algorithm and to what has been considered ambiguity in Haskell. It does not depend on the use of programmer specified functional dependencies between type class parameters nor any other extra mechanism, such as associated types. A type system and a type inference algorithm, sound and complete with respect to the type system, are presented.
Journal of Universal Computer Science, 2003
This paper describes a practical type inference algorithm for typing polymorphic and possibly mut... more This paper describes a practical type inference algorithm for typing polymorphic and possibly mutually recursive definitions, using Haskell to provide a highlevel implementation of the algorithm.

Journal of Universal Computer Science, 2007
The type system of Haskell and some related systems are based on an open world approach for overl... more The type system of Haskell and some related systems are based on an open world approach for overloading. In an open world, the principal type of each overloaded symbol must be explicitly annotated (in Haskell, annotations occur in type class declarations) and a definition of an overloaded symbol is required to exist only when overloading is resolved. In a closed world, on the other hand, each principal type is determined according to the types of definitions that exist in the relevant context and, furthermore, overloading resolution for an expression considers only the context of the definition of its constituent symbols. In this paper we formally characterize open and closed worlds, and discuss their relative advantages. We present a type system that supports both approaches together, and compare the defined system with Haskell type classes extended with multi-parameter type classes and functional dependencies. We show in particular that functional dependencies are not necessary in order to support multi-parameter type classes, and present an alternative route.
This article discusses the problem of constraint-set satisfiability (CS-SAT ) -that is, the probl... more This article discusses the problem of constraint-set satisfiability (CS-SAT ) -that is, the problem of determining whether a given constraint-set is satisfiable in a given typing context -in the context of systems with support for overloading and parametric polymorphism. The paper reviews previous works on constraint-set satisfiability, showing that overloading policies used in order to guarantee decidability of CS-SAT have been generally too restrictive. An algorithm is proposed that does not impose a severe restriction on possible overloadings and decides CS-SAT in an expectedly vast majority of cases of practical interest. In cases for which satisfiability cannot be decided, a configurable limit on the number of iterations is used in order to guarantee termination.
Uploads
Papers by Cristiano Vasconcellos