Results 1  10
of
10
Putting Type Annotations to Work
, 1996
"... We study an extension of the HindleyMilner system with explicit type scheme annotations and type declarations. The system can express polymorphic function arguments, userdefined data types with abstract components, and structure types with polymorphic fields. More generally, all programs of the po ..."
Abstract

Cited by 101 (1 self)
 Add to MetaCart
(Show Context)
We study an extension of the HindleyMilner system with explicit type scheme annotations and type declarations. The system can express polymorphic function arguments, userdefined data types with abstract components, and structure types with polymorphic fields. More generally, all programs of the polymorphic lambda calculus can be encoded by a translation between typing derivations. We show that type reconstruction in this system can be reduced to the decidable problem of firstorder unification under a mixed prefix.
Extending ML with semiexplicit higherorder polymorphism
 Information and Computation
, 1999
"... Abstract. We propose a modest conservative extension to ML that allows semiexplicit higherorder polymorphism while preserving the essential properties of ML. In our proposal, the introduction of polymorphic types remains fully explicit, that is, both the introduction and the exact polymorphic ty ..."
Abstract

Cited by 21 (8 self)
 Add to MetaCart
Abstract. We propose a modest conservative extension to ML that allows semiexplicit higherorder polymorphism while preserving the essential properties of ML. In our proposal, the introduction of polymorphic types remains fully explicit, that is, both the introduction and the exact polymorphic type must be specied. However, the elimination of polymorphic types is now semiimplicit: only the elimination itself must be speci ed as the polymorphic type is inferred. This extension is particularly useful in Objective ML where polymorphism replaces subtyping.
Raising ML to the Power of System F
 In ICFP ’03: Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
, 2003
"... We propose a type system MLF that generalizes ML with firstclass polymorphism as in System F. We perform partial type reconstruction. As in ML and in opposition to System F, each typable expression admits a principal type, which can be inferred. Furthermore, all expressions of ML are welltyped, wi ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
We propose a type system MLF that generalizes ML with firstclass polymorphism as in System F. We perform partial type reconstruction. As in ML and in opposition to System F, each typable expression admits a principal type, which can be inferred. Furthermore, all expressions of ML are welltyped, with a possibly more general type than in ML, without any need for type annotation. Only arguments of functions that are used polymorphically must be annotated, which allows to type all expressions of System F as well.
Rank 2 Types for Term Graph Rewriting (Extended Abstract)
"... We define a notion of type assignment with polymorphic intersection types of rank 2 fora term graph rewriting language that expresses sharing and cycles. We show that type assignment is decidable through defining, using the extended notion of unification from [5],a notion of principal pair which gen ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
(Show Context)
We define a notion of type assignment with polymorphic intersection types of rank 2 fora term graph rewriting language that expresses sharing and cycles. We show that type assignment is decidable through defining, using the extended notion of unification from [5],a notion of principal pair which generalizes ml's principal type property.
An Algebraic View on Recursive Types
 Applied Categorical Structures
, 1996
"... This paper is a translated extract of my diploma thesis, see [Mar95]. I would like to thank Pawe/l Urzyczyn for some useful hints, Martin Hofmann, Mathias Kegelmann and Hermann Puhlmann for their careful proof reading, and especially Achim Jung for his stimulating supervision ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
This paper is a translated extract of my diploma thesis, see [Mar95]. I would like to thank Pawe/l Urzyczyn for some useful hints, Martin Hofmann, Mathias Kegelmann and Hermann Puhlmann for their careful proof reading, and especially Achim Jung for his stimulating supervision
Implementing Overloading and Polymorphism in Cforall
, 2003
"... The programming language Cforall extends the C language with, among other things, overloading, parametric polymorphism, and functions that can return multiple values from a single call. This thesis presents an outline of the first implementation of the core Cforall language. An effective implementat ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
The programming language Cforall extends the C language with, among other things, overloading, parametric polymorphism, and functions that can return multiple values from a single call. This thesis presents an outline of the first implementation of the core Cforall language. An effective implementation of Cforall requires complete support for new language constructs while preserving the behaviour and efficiency of existing C programs. Analyzing the meaning of Cforall programs requires significantly more sophisticated techniques than are necessary for C programs; existing techniques for the analysis of overloading and polymorphism are adapted and extended to apply to Cforall. Three strategies for generating code for polymorphic programs are compared, using plain C as an intermediate representation. Finally, a realistic Cforall program is presented and characteristics of the generated C code are examined.
Implementing Overloading and Polymorphism in
"... The programming language Cforall extends the C language with, among other things, overloading, parametric polymorphism, and functions that can return multiple values from a single call. This thesis presents an outline of the first implementation of the core Cforall language. An effective implementat ..."
Abstract
 Add to MetaCart
The programming language Cforall extends the C language with, among other things, overloading, parametric polymorphism, and functions that can return multiple values from a single call. This thesis presents an outline of the first implementation of the core Cforall language. An effective implementation of Cforall requires complete support for new language constructs while preserving the behaviour and efficiency of existing C programs. Analyzing the meaning of Cforall programs requires significantly more sophisticated techniques than are necessary for C programs; existing techniques for the analysis of overloading and polymorphism are adapted and extended to apply to Cforall. Three strategies for generating code for polymorphic programs are compared, using plain C as an intermediate representation. Finally, a realistic Cforall program is presented and characteristics of the generated C code are examined.
An Optimized Complete SemiAlgorithm for System . . .
, 1999
"... In this paper we give a new deterministic presentation of system F with reduction. This presentation allow us to write a complete semialgorithm for this system that may be useful in a real programming language. keywords: lambdacalculus, typeinference, typechecking 1 Introduction Motivation M ..."
Abstract
 Add to MetaCart
In this paper we give a new deterministic presentation of system F with reduction. This presentation allow us to write a complete semialgorithm for this system that may be useful in a real programming language. keywords: lambdacalculus, typeinference, typechecking 1 Introduction Motivation Most of the statically typed programming language (SML, OCaml, Haskell, ...) are based on Milner's restriction [1] of Girard and Reynolds System F [4, 13]. To improve the language, some complex extensions of the typesystem are added to handle the needed features (modules with abstract types, object, some kind of polymorphic recursion). These extensions are quite complex both at the theoretical and the programming level. However, they leads to a decidable typeinference algorithm. Most, if not all, of these extensions could be handled inside system F. For instance, existential types are denable in system F and can be used to construct tuples with abstract types which correspond to the notio...
Type Checking in System . . .
"... The main contribution of this paper is a partial typechecking algorithm for the system F and its use in a programming language like ML. We dene this system as an extension of the secondorder calculus (system F) verifying the preservation of type during computation (subjectreduction) for red ..."
Abstract
 Add to MetaCart
The main contribution of this paper is a partial typechecking algorithm for the system F and its use in a programming language like ML. We dene this system as an extension of the secondorder calculus (system F) verifying the preservation of type during computation (subjectreduction) for reduction (this result fails for reduction in system F). Our presentation is based on an original notion of subtyping which includes all the handling of quantication rules. 1 Introduction. Motivation. Type systems have proved to be useful for many modern functional programming languages such as ML, Miranda, Haskell, . . . . In most cases, the basis of the type system is Milner's algorithm [12]. The main characteristic of these type systems is polymorphism which allows the programmer to write generic functions that can work on arguments of dierent types. However it is often insucient: polymorphic recursion, existential types or the state monad of Haskell are treated using specic exte...
Colored Local Type Inference
, 2001
"... We present a type system for a language based on F# , which allows certain type annotations to be elided in actual programs. Local type inference determines types by a combination of type propagation and local constraint solving, rather than by global constraint solving. We refine the previously exi ..."
Abstract
 Add to MetaCart
We present a type system for a language based on F# , which allows certain type annotations to be elided in actual programs. Local type inference determines types by a combination of type propagation and local constraint solving, rather than by global constraint solving. We refine the previously existing local type inference system of Pierce and Turner[PT98] by allowing partial type information to be propagated. This is expressed by coloring types to indicate propagation directions. Propagating partial type information allows us to omit type annotations for the visitor pattern, the analogue of pattern matching in languages without sum types.