Results 1  10
of
10
Languages of the Future
 In OOPSLA ’04: Companion to the 19th annual ACM SIGPLAN conference on Objectoriented programming systems, languages, and applications
, 2004
"... This paper explores a new point in the design space of formal reasoning systems  part programming language, part logical framework. The system is built on a programming language where the user expresses equality constraints between types and the type checker then enforces these constraints. This si ..."
Abstract

Cited by 73 (3 self)
 Add to MetaCart
(Show Context)
This paper explores a new point in the design space of formal reasoning systems  part programming language, part logical framework. The system is built on a programming language where the user expresses equality constraints between types and the type checker then enforces these constraints. This simple extension to the type system allows the programmer to describe properties of his program in the types of witness objects which can be thought of as concrete evidence that the program has the property desired. These techniques and two other rich typing mechanisms, rankN polymorphism and extensible kinds, create a powerful new programming idiom for writing programs whose types enforce semantic properties. A language with these features is both a practical programming language and a logic. This marriage between two previously separate entities increases the probability that users will apply formal methods to their programming designs. This kind of synthesis creates the foundations for the languages of the future.
Qualified types for MLF
 In The International Conference on Functional Programming (ICFP’05
, 2005
"... MLF is a type system that extends a functional language with impredicative rankn polymorphism. Type inference remains possible and only in some clearly defined situations, a local type annotation is required. Qualified types are a general concept that can accommodate a wide range of type systems ex ..."
Abstract

Cited by 24 (2 self)
 Add to MetaCart
(Show Context)
MLF is a type system that extends a functional language with impredicative rankn polymorphism. Type inference remains possible and only in some clearly defined situations, a local type annotation is required. Qualified types are a general concept that can accommodate a wide range of type systems extension, for example, type classes in Haskell. We show how the theory of qualified types can be used seamlessly with the higherranked impredicative polymorphism of MLF, and give a solution to the nontrivial problem of evidence translation in the presence of impredicative datatypes. 1.
Existential Label Flow Inference via CFL Reachability
 In SAS‘06
, 2005
"... Label flow analysis is a fundamental static analysis problem with a wide variety of applications. Previous work by Mossin developed a polynomial time subtypingbased label flow inference that supports HindleyMilner style polymorphism with polymorphic recursion. Rehof et al have developed an efficie ..."
Abstract

Cited by 15 (4 self)
 Add to MetaCart
(Show Context)
Label flow analysis is a fundamental static analysis problem with a wide variety of applications. Previous work by Mossin developed a polynomial time subtypingbased label flow inference that supports HindleyMilner style polymorphism with polymorphic recursion. Rehof et al have developed an efficient O(n 3) inference algorithm for Mossin’s system based on contextfree language (CFL) reachability. In this paper, we extend these results to a system that also supports existential polymorphism, which is important for precisely describing correlations among members of a structured type, even when values of that type are part of dynamic data structures. We first develop a provably sound checking system based on polymorphicallyconstrained types. As usual, we restrict universal quantification to the top level of a type, but existential quantification is first class, with subtyping allowed between existentials with the same binding structure. We then develop a CFLbased inference system. Programmers specify which positions in a type are existentially quantified, and the algorithm infers the constraints bound in the type, or rejects a program if the annotations are inconsistent. 1
Uniqueness Typing Simplified
"... Abstract. We present a uniqueness type system that is simpler than both Clean’s uniqueness system and a system we proposed previously. The new type system is straightforward to implement and add to existing compilers, and can easily be extended with advanced features such as higher rank types and im ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
(Show Context)
Abstract. We present a uniqueness type system that is simpler than both Clean’s uniqueness system and a system we proposed previously. The new type system is straightforward to implement and add to existing compilers, and can easily be extended with advanced features such as higher rank types and impredicativity. We describe our implementation in Morrow, an experimental functional language with both these features. Finally, we prove soundness of the core type system with respect to the callbyneed lambda calculus. 1 Introduction to Uniqueness Typing An important property of pure functional programming languages is referential transparency: the same expression used twice must have the same value twice. This makes equational reasoning possible and aids program analysis, but most languages do not have this property. For example, in the following C fragment,
Strong Normalization of ML F via a Calculus of Coercions
"... ML F is a type system extending ML with firstclass polymorphism as in system F. The main goal of the present paper is to show that ML F enjoys strong normalization, i.e., it has no infinite reduction paths. The proof of this result is achieved in several steps. We first focus on xML F, the Churchs ..."
Abstract
 Add to MetaCart
ML F is a type system extending ML with firstclass polymorphism as in system F. The main goal of the present paper is to show that ML F enjoys strong normalization, i.e., it has no infinite reduction paths. The proof of this result is achieved in several steps. We first focus on xML F, the Churchstyle version of ML F, and show that it can be translated into a calculus of coercions: terms are mapped into terms and instantiations into coercions. This coercion calculus can be seen as a decorated version of system F, so that the simulation result entails strong normalization of xML F through the same property of system F. We then transfer the result to all other versions of ML F using the fact that they can be compiled into xML F and showing there is a bisimulation between the two. We conclude by discussing what results and issues are encountered when using the candidates of reducibility approach to the same problem. Keywords: polymorphic types. ML F, xML F, calculus of coercions, strong normalization, coercions, 1.
Abstract
"... To argue that it is practical to extend core Haskell to support higherorder modules, we translate Dreyer, Crary, and Harper’s higherorder module system (2002, 2003) into System Fω. Our translation is the first to fully treat generative functors (with existential types) alongside applicative ones ( ..."
Abstract
 Add to MetaCart
To argue that it is practical to extend core Haskell to support higherorder modules, we translate Dreyer, Crary, and Harper’s higherorder module system (2002, 2003) into System Fω. Our translation is the first to fully treat generative functors (with existential types) alongside applicative ones (with Skolemized types). Applicative functors correspond to higherorder polymorphism in idiomatic Haskell—abstract, higherkinded type constructors, accompanied by term combinators. Higherorder functors correspond to higherrank polymorphism in Fω, which is practical to add to Haskell and has been added (Peyton Jones and Shields 2004). The difference between generative and applicative functors boils down to whether existential type variables scope under or over the typing context. Thus we can express functor bodies that mix generative and applicative parts, which are inconvenient to simulate in Dreyer et al.’s language. Also, we elude the avoidance problem (the lack of minimal supersignatures) because existential quantification is primitive in Fω. Although modules are firstclass values, type sharing and the phase distinction are both preserved: the programmer can make finegrained tradeoffs between opaque and transparent types, and two modules are statically equivalent just in case they have the same type. Our work can guide further improvements to modularity in Haskell and ML. 1
Combining Programming Languages and Logical Reasoning Systems: Project Summary
"... This paper was particularly useful as it explained in practical terms how to build such a type checker  in particular how to set up the subsumption relation that describes which types are more polymorphic than others ..."
Abstract
 Add to MetaCart
This paper was particularly useful as it explained in practical terms how to build such a type checker  in particular how to set up the subsumption relation that describes which types are more polymorphic than others
Language Constructs and Features
"... MLF is a type system that extends a functional language with impredicative rankn polymorphism. Type inference remains possible and only in some clearly defined situations, a local type annotation is required. Qualified types are a general concept that can accommodate a wide range of type systems ex ..."
Abstract
 Add to MetaCart
(Show Context)
MLF is a type system that extends a functional language with impredicative rankn polymorphism. Type inference remains possible and only in some clearly defined situations, a local type annotation is required. Qualified types are a general concept that can accommodate a wide range of type systems extension, for example, type classes in Haskell. We show how the theory of qualified types can be used seamlessly with the higherranked impredicative polymorphism of MLF, and give a solution to the nontrivial problem of evidence translation in the presence of impredicative datatypes.