Results 1 - 10
of
15
Languages of the Future
- In OOPSLA ’04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented 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 62 (3 self)
- Add to MetaCart
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, rank-N 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.
Applied Type System (extended abstract
- In post-workshop Proceedings of TYPES 2003
, 2004
"... Abstract. The framework Pure Type System (PTS) offers a simple and general approach to designing and formalizing type systems. However, in the presence of dependent types, there often exist some acute problems that make it difficult for PTS to accommodate many common realistic programming features s ..."
Abstract
-
Cited by 34 (12 self)
- Add to MetaCart
Abstract. The framework Pure Type System (PTS) offers a simple and general approach to designing and formalizing type systems. However, in the presence of dependent types, there often exist some acute problems that make it difficult for PTS to accommodate many common realistic programming features such as general recursion, recursive types, effects (e.g., exceptions, references, input/output), etc. In this paper, we propose a new framework Applied Type System (ATS) to allow for designing and formalizing type systems that can readily support common realistic programming features. The key salient feature of ATS lies in a complete separation between statics, in which types are formed and reasoned about, and dynamics, in which programs are constructed and evaluated. With this separation, it is no longer possible for a program to occur in a type as is otherwise allowed in PTS. We present not only a formal development of ATS but also mention some examples in support of using ATS as a framework to form type systems for practical programming. 1
An Implementation of Session Types
- In PADL, volume 3057 of LNCS
, 2004
"... A session type is an abstraction of a set of sequences of heterogeneous values sent and received over a communication channel. Session types can be used for specifying stream-based Internet protocols. ..."
Abstract
-
Cited by 20 (0 self)
- Add to MetaCart
A session type is an abstraction of a set of sequences of heterogeneous values sent and received over a communication channel. Session types can be used for specifying stream-based Internet protocols.
A polymorphic modal type system for Lisp-like multi-staged languages
- In The 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
, 2006
"... This article presents a polymorphic modal type system and its principal type inference algorithm that conservatively extend ML by all of Lisp’s staging constructs (the quasi-quotation system). The combination is meaningful because ML is a practical higher-order, impure, and typed language, while Lis ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
This article presents a polymorphic modal type system and its principal type inference algorithm that conservatively extend ML by all of Lisp’s staging constructs (the quasi-quotation system). The combination is meaningful because ML is a practical higher-order, impure, and typed language, while Lisp’s quasi-quotation system has long evolved complying with the demands from multi-staged programming practices. Our type system supports open code, unrestricted operations on references, intentional variable-capturing substitution as well as capture-avoiding substitution, and lifting values into code, whose combination escaped all the previous systems.
A cost-effective foundational certified code system
, 2005
"... Certified code systems enable untrusted programs to be proven safe to execute in a machine–checkable manner. Recent work has focused on building foundational certified code systems, where safety is defined relative to a concrete machine architecture. We wish to build a cost–effective system, with pr ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Certified code systems enable untrusted programs to be proven safe to execute in a machine–checkable manner. Recent work has focused on building foundational certified code systems, where safety is defined relative to a concrete machine architecture. We wish to build a cost–effective system, with practicality along two dimensions — the intellectual effort to engineer the proofs, and the resource usage by the machine in verifying these proofs. Thus, we factor the proof that a particular program is safe to execute into two parts, a generic part and a program–specific part. These parts are linked by a mediating logic, typically a type system, which we call the safety condition. Consequently, we must prove that all programs that satisfy this condition are safe to execute, and then, we prove that the particular program satisfies this safety condition. Moreover, each of these proofs must be done in a cost–effective manner. In previous work, we have described a machine–checkable proof for the first part, based on defining an operational semantics in LF and using the Twelf metalogic. For the second part, experience has shown that proof terms for a reasonable logic, or type system, are too big to generate, send across the network, and check. We wish to check adherence to the safety condition by an untrusted functional program. It remains to prove (in a machine–checkable manner) that the program implements the logic specified in a LF signature. We propose to accomplish this by static typechecking. We have designed an expressive type system using dependent refinements for this purpose. 1
Applied Type System with Stateful Views
- Carnegie Mellon University
, 1998
"... We present a type system that can effectively facilitate the use of types in capturing invariants in stateful programs that may involve (sophisticated) pointer manipulation. With its root in a recently developed framework Applied Type System (ATS), the type system imposes a level of abstraction on p ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
We present a type system that can effectively facilitate the use of types in capturing invariants in stateful programs that may involve (sophisticated) pointer manipulation. With its root in a recently developed framework Applied Type System (ATS), the type system imposes a level of abstraction on program states by introducing a novel notion of recursive stateful views and then relies on a form of linear logic to reason about such views. We consider the design and then the formalization of the type system to constitute the primary contribution of the paper. In addition, we mention a prototype implementation of the type system and then give a variety of examples that attest to the practicality of programming with recursive stateful views.
Directly reflective meta-programming
- Journal of Higher Order and Symbolic Computation
, 2008
"... Existing meta-programming languages operate on encodings of programs as data. This paper presents a new meta-programming language, based on an untyped lambda calculus, in which structurally reflective programming is supported directly, without any encoding. The language features call-by-value and ca ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Existing meta-programming languages operate on encodings of programs as data. This paper presents a new meta-programming language, based on an untyped lambda calculus, in which structurally reflective programming is supported directly, without any encoding. The language features call-by-value and call-by-name lambda abstractions, as well as novel reflective features enabling the intensional manipulation of arbitrary program terms. The language is scope safe, in the sense that variables can neither be captured nor escape their scopes. The expressiveness of the language is demonstrated by showing how to implement quotation and evaluation operations, as proposed by Wand. The language’s utility for meta-programming is further demonstrated through additional representative examples. A prototype implementation is described and evaluated.
First-class open and closed code fragments
- IN PROCEEDINGS OF THE SIXTH SYMPOSIUM ON TRENDS IN FUNCTIONAL PROGRAMMING
, 2005
"... Staged languages that allow “evaluation under lambdas” are excellent implementation languages for programs that manipulate, specialize, and execute code at runtime. In statically typed staged languages, the existence of staging primitives demands a sound distinction between open code (that may be ma ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Staged languages that allow “evaluation under lambdas” are excellent implementation languages for programs that manipulate, specialize, and execute code at runtime. In statically typed staged languages, the existence of staging primitives demands a sound distinction between open code (that may be manipulated under lambdas) and closed code (that may be executed). We present λ [] , a monomorphic type-safe staged language for manipulating code with free identifiers. It differs from most existing staged languages (such as, for example, derivatives of MetaML) in that its dynamic fragment is not hygienic; in other words, dynamic identifiers are not renamed during substitution. λ [] contains a first-class run operation, supports mutable cells (and other computational effects), and has decidable type inference. As such, it is a promising first step towards a practical multi-stage programming language.
Distributed Meta-Programming ∗
, 2004
"... The need for mobile computing is evident and growing rapidly in this age of Internet. However, it is in general difficult to construct programs in support of mobile computing due to issues such as mobility (of code) and locality and heterogeneity (of resources). In this paper, we study distributed m ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
The need for mobile computing is evident and growing rapidly in this age of Internet. However, it is in general difficult to construct programs in support of mobile computing due to issues such as mobility (of code) and locality and heterogeneity (of resources). In this paper, we study distributed meta-programming from a type-theoretic perspective, presenting a language to facilitate the construction of programs that may generate and distribute code at run-time. In particular, we are to form a type system that can statically guarantee that only well-typed code (according to some chosen type discipline) can be constructed and then sent to a proper location for execution. To achieve this, we make use of a form of typeful code representation developed in a previous study on meta-programming. The main contribution of the paper lies in the recognition and then formalization of a typeful approach to distributed meta-programming that is simple as well as general. In addition, we have finished a prototype implementation in support of the practicality of this approach, providing a solid proof of concept.
GADTs + Extensible Kinds = Dependent Programming A Programming Pearl for the 21st Century
"... Abstract We hope this paper stimulates a discussion about the future of functional programming languages. To start thatdiscussion we make a concrete proposal. We explore a new point in the design space of programming languages. ..."
Abstract
- Add to MetaCart
Abstract We hope this paper stimulates a discussion about the future of functional programming languages. To start thatdiscussion we make a concrete proposal. We explore a new point in the design space of programming languages.

