Results 1  10
of
45
Mllike inference for classifiers
 In ESOP
, 2004
"... Abstract. Environment classifiers were proposed as a new approach to typing multistage languages. Safety was established in the simplytyped and letpolymorphic settings. While the motivation for classifiers was the feasibility of inference, this was in fact not established. This paper starts with ..."
Abstract

Cited by 33 (8 self)
 Add to MetaCart
(Show Context)
Abstract. Environment classifiers were proposed as a new approach to typing multistage languages. Safety was established in the simplytyped and letpolymorphic settings. While the motivation for classifiers was the feasibility of inference, this was in fact not established. This paper starts with the observation that inference for the full classifierbased system fails. We then identify a subset of the original system for which inference is possible. This subset, which uses implicit classifiers, retains significant expressivity (e.g. it can embed the calculi of Davies and Pfenning) and eliminates the need for classifier names in terms. Implicit classifiers were implemented in MetaOCaml, and no changes were needed to make an existing test suite acceptable by the new type checker. 1
A Simpler Proof Theory for Nominal Logic
 In FOSSACS 2005, number 3441 in LNCS
, 2005
"... Nominal logic is a variant of firstorder logic which provides support for reasoning about bound names in abstract syntax. A key feature of nominal logic is the newquantifier, which quantifies over fresh names (names not appearing in any values considered so far). Previous attempts have been made ..."
Abstract

Cited by 29 (11 self)
 Add to MetaCart
(Show Context)
Nominal logic is a variant of firstorder logic which provides support for reasoning about bound names in abstract syntax. A key feature of nominal logic is the newquantifier, which quantifies over fresh names (names not appearing in any values considered so far). Previous attempts have been made to develop convenient rules for reasoning with the newquantifier, but we argue that none of these attempts is completely satisfactory. In this paper we develop a new sequent calculus for nominal logic in which the rules for the newquantifier are much simpler than in previous attempts. We also prove several structural and metatheoretic properties, including cutelimination, consistency, and conservativity with respect to Pitts' axiomatization of nominal logic; these proofs are considerably simpler for our system. 1
The ∇calculus. Functional programming with higherorder encodings
 In Proceedings of the 7th International Conference on Typed Lambda Calculi and Applications
, 2005
"... Abstract. Higherorder encodings use functions provided by one language to represent variable binders of another. They lead to concise and elegant representations, which historically have been difficult to analyze and manipulate. In this paper we present the ∇calculus, a calculus for defining gener ..."
Abstract

Cited by 27 (3 self)
 Add to MetaCart
Abstract. Higherorder encodings use functions provided by one language to represent variable binders of another. They lead to concise and elegant representations, which historically have been difficult to analyze and manipulate. In this paper we present the ∇calculus, a calculus for defining general recursive functions over higherorder encodings. To avoid problems commonly associated with using the same function space for representations and computations, we separate one from the other. The simplytyped λcalculus plays the role of the representationlevel. The computationlevel contains not only the usual computational primitives but also an embedding of the representationlevel. It distinguishes itself from similar systems by allowing recursion under representationlevel λbinders while permitting a natural style of programming which we believe scales to other logical frameworks. Sample programs include bracket abstraction, parallel reduction, and an evaluator for a simple language with firstclass continuations. 1
Static name control for FreshML
 In IEEE Symposium on Logic in Computer Science (LICS
, 2007
"... 3 A complete example ..."
(Show Context)
A polymorphic modal type system for Lisplike multistaged languages
 In The 33rd ACM SIGPLANSIGACT 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 quasiquotation system). The combination is meaningful because ML is a practical higherorder, impure, and typed language, while Lis ..."
Abstract

Cited by 24 (4 self)
 Add to MetaCart
(Show Context)
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 quasiquotation system). The combination is meaningful because ML is a practical higherorder, impure, and typed language, while Lisp’s quasiquotation system has long evolved complying with the demands from multistaged programming practices. Our type system supports open code, unrestricted operations on references, intentional variablecapturing substitution as well as captureavoiding substitution, and lifting values into code, whose combination escaped all the previous systems.
A Monadic Multistage Metalanguage
, 2003
"... We describe a metalanguage MMML, which makes explicit the order of evaluation (in the spirit of monadic metalanguages) and the staging of computations (as in languages for multilevel bindingtime analysis). The main contribution of the paper is an operational semantics which is sufficiently detaile ..."
Abstract

Cited by 17 (7 self)
 Add to MetaCart
(Show Context)
We describe a metalanguage MMML, which makes explicit the order of evaluation (in the spirit of monadic metalanguages) and the staging of computations (as in languages for multilevel bindingtime analysis). The main contribution of the paper is an operational semantics which is sufficiently detailed for analyzing subtle aspects of multistage programming, but also intuitive enough to serve as a reference semantics. For instance, the separation of computational types from code types, makes clear the distinction between a computation for generating code and the generated code, and provides a basis for multilingual extensions, where a variety of programming languages (aka monads) coexist. The operational semantics consists of two parts: local (semantics preserving) simplification rules, and computation steps executed in a deterministic order (because they may have sideeffects). We focus on the computational aspects, thus we adopt a simple type system, that can detect usual type errors, but not the unresolved link errors. Because of its explicit annotations, MMML is suitable as an intermediate language.
Implementing Typeful Program Transformations
"... The notion of program transformation is ubiquitous in programming language studies on interpreters, compilers, partial evaluators, etc. In order to implement a program transformation, we need to choose a representation in the meta language, that is, the programming language in which we construct p ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
(Show Context)
The notion of program transformation is ubiquitous in programming language studies on interpreters, compilers, partial evaluators, etc. In order to implement a program transformation, we need to choose a representation in the meta language, that is, the programming language in which we construct programs, for representing object programs, that is, the programs in the object language on which the program transformation is to be performed. In practice, most representations chosen for typed...
From dynamic binding to state via modal possibility
 In PPDP ’03: Proceedings of the 5th ACM SIGPLAN International Conference on Principles and Practice of Declaritive Programming
, 2003
"... In this paper we propose a typed, purely functional calculus for state (with secondclass locations) in which types reflect the dichotomy between reading from and writing into the global store. This is in contrast to the usual formulation of state via monads, where the primitives for reading and wri ..."
Abstract

Cited by 9 (2 self)
 Add to MetaCart
(Show Context)
In this paper we propose a typed, purely functional calculus for state (with secondclass locations) in which types reflect the dichotomy between reading from and writing into the global store. This is in contrast to the usual formulation of state via monads, where the primitives for reading and writing introduce the same monadic type constructor. We hope to argue that making this distinction is useful, simple, and has strong logical foundations. Our type system is based on the proofterm calculus for constructive modal logic S4, which has two modal type operators: for necessity and 3 for possibility. We extend this calculus with the notion of names (which stand for locations) and generalize to indexed families of modal operators (indexed by sets of names). Then, the modal type CA classifies computations of type A which read from store locations listed in the set C. The dual type 3CA classifies computations which first write into the locations from C and than use the changed store to obtain a value of type A. There are several benefits to this development. First, the necessitation fragment of the language is interesting in its own: it formulates a calculus of dynamic binding. Second, the possibility operator 3 is a monad, thus forcing the singlethreading of memory writes, but not of memory reads (as these are associated with ). Finally, the different status of reads and writes gives rise to a natural way of expressing the allocation of uninitialized memory while also providing guarantees that only initialized locations are dereferenced.
Typed selfrepresentation
 IN PLDI
, 2009
"... Selfrepresentation – the ability to represent programs in their own language – has important applications in reflective languages and many other domains of programming language design. Although approaches to designing typed program representations for sublanguages of some base language have become ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
(Show Context)
Selfrepresentation – the ability to represent programs in their own language – has important applications in reflective languages and many other domains of programming language design. Although approaches to designing typed program representations for sublanguages of some base language have become quite popular recently, the question whether a fully metacircular typed selfrepresentation is possible is still open. This paper makes a big step towards this aim by defining the F ∗ ω calculus, an extension of the higherorder polymorphic lambda calculus Fω that allows typed selfrepresentations. While the usability of these representations for metaprogramming is still limited, we believe that our approach makes a significant step towards a new generation of reflective languages that are both safe and efficient.
A Modal Calculus for Effect Handling
, 2003
"... In their purest formulation, monads are used in functional programming for two purposes: (1) to hygienically propagate effects, and (2) to globalize the effect scope  once an effect occurs, the purity of the surrounding computation cannot be restored. As a consequence, monadic typing does not prov ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
(Show Context)
In their purest formulation, monads are used in functional programming for two purposes: (1) to hygienically propagate effects, and (2) to globalize the effect scope  once an effect occurs, the purity of the surrounding computation cannot be restored. As a consequence, monadic typing does not provide very naturally for the practically important ability to handle effects, and there is a number of previous works directed toward remedying this deficiency. It is mostly based on extending the monadic framework with further extralogical constructs to support handling. In this paper we adopt...