Results 1  10
of
38
A Reflection on CallbyValue
 ACM Transactions on Programming Languages and Systems
, 1996
"... This article is a revised and extended version of a paper that appeared in the ACM SIGPLAN International Conference on Functional Programming (Philadelphia, Pa.), 1996. Work started while the first author was at Chalmers University, and the second author was at University of Glasgow. Authors' a ..."
Abstract

Cited by 66 (6 self)
 Add to MetaCart
This article is a revised and extended version of a paper that appeared in the ACM SIGPLAN International Conference on Functional Programming (Philadelphia, Pa.), 1996. Work started while the first author was at Chalmers University, and the second author was at University of Glasgow. Authors' addresses: A. Sabry, University of Oregon, Department of Computer and Information Science, Eugene, OR 97403; P. Wadler, Bell Laboratories, Lucent Technologies, 700 Mountain Avenue, Room 2T304, Murray Hill, NJ 079740636. Permission to make digital/hard copy of all or part of this material without fee is granted provided that the copies are not made or distributed for profit or commercial advantage, the ACM copyright/server notice, the title of the publication, and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery, Inc. (ACM). To copy otherwise, to republish, to post on servers, or to redistribute to lists requires prior specific permission and/or a fee. c fl 1997 ACM 01640925/97/09000111 $03.50
Some lambda calculus and type theory formalized
 Journal of Automated Reasoning
, 1999
"... Abstract. We survey a substantial body of knowledge about lambda calculus and Pure Type Systems, formally developed in a constructive type theory using the LEGO proof system. On lambda calculus, we work up to an abstract, simplified, proof of standardization for beta reduction, that does not mention ..."
Abstract

Cited by 65 (10 self)
 Add to MetaCart
(Show Context)
Abstract. We survey a substantial body of knowledge about lambda calculus and Pure Type Systems, formally developed in a constructive type theory using the LEGO proof system. On lambda calculus, we work up to an abstract, simplified, proof of standardization for beta reduction, that does not mention redex positions or residuals. Then we outline the meta theory of Pure Type Systems, leading to the strengthening lemma. One novelty is our use of named variables for the formalization. Along the way we point out what we feel has been learned about general issues of formalizing mathematics, emphasizing the search for formal definitions that are convenient for formal proof and convincingly represent the intended informal concepts.
Finally Tagless, Partially Evaluated  Tagless Staged Interpreters for Simpler Typed Languages
 UNDER CONSIDERATION FOR PUBLICATION IN J. FUNCTIONAL PROGRAMMING
"... We have built the first family of tagless interpretations for a higherorder typed object language in a typed metalanguage (Haskell or ML) that require no dependent types, generalized algebraic data types, or postprocessing to eliminate tags. The statically typepreserving interpretations include an ..."
Abstract

Cited by 53 (9 self)
 Add to MetaCart
We have built the first family of tagless interpretations for a higherorder typed object language in a typed metalanguage (Haskell or ML) that require no dependent types, generalized algebraic data types, or postprocessing to eliminate tags. The statically typepreserving interpretations include an evaluator, a compiler (or staged evaluator), a partial evaluator, and callbyname and callbyvalue CPS transformers. Our principal technique is to encode de Bruijn or higherorder abstract syntax using combinator functions rather than data constructors. In other words, we represent object terms not in an initial algebra but using the coalgebraic structure of the λcalculus. Our representation also simulates inductive maps from types to types, which are required for typed partial evaluation and CPS transformations. Our encoding of an object term abstracts uniformly over the family of ways to interpret it, yet statically assures that the interpreters never get stuck. This family of interpreters thus demonstrates again that it is useful to abstract over higherkinded types.
Syntactic Accidents in Program Analysis: On the Impact of the CPS Transformation
 Journal of Functional Programming
, 2000
"... Our results formalize and confirm a folklore theorem about traditional bindingtime analysis, namely that CPS has a positive effect on binding times. What may be more surprising is that the benefit does not arise from a standard refinement of program analysis, as, for instance, duplicating continuati ..."
Abstract

Cited by 28 (9 self)
 Add to MetaCart
(Show Context)
Our results formalize and confirm a folklore theorem about traditional bindingtime analysis, namely that CPS has a positive effect on binding times. What may be more surprising is that the benefit does not arise from a standard refinement of program analysis, as, for instance, duplicating continuations.
Donkey anaphora is inscope binding
, 2008
"... We propose that the antecedent of a donkey pronoun takes scope over and binds the donkey pronoun, just like any other quantificational antecedent would bind a pronoun. We flesh out this idea in a grammar that compositionally derives the truth conditions of donkey sentences containing conditionals a ..."
Abstract

Cited by 28 (4 self)
 Add to MetaCart
We propose that the antecedent of a donkey pronoun takes scope over and binds the donkey pronoun, just like any other quantificational antecedent would bind a pronoun. We flesh out this idea in a grammar that compositionally derives the truth conditions of donkey sentences containing conditionals and relative clauses, including those involving modals and proportional quantifiers. For example, an indefinite in the antecedent of a conditional can bind a donkey pronoun in the consequent by taking scope over the entire conditional. Our grammar manages continuations using three independently motivated typeshifters, Lift, Lower, and Bind. Empirical support comes from donkey weak crossover (*He beats it if a farmer owns a donkey): in our system, a quantificational binder need not ccommand a pronoun that it binds, but must be evaluated before it, so that donkey weak crossover is just a special case of weak crossover. We compare our approach to situationbased Etype pronoun analyses, as well as to dynamic accounts such as Dynamic Predicate Logic. A new ‘tower ’ notation makes derivations considerably easier to follow and manipulate than some previous grammars based on continuations.
Linguistic Side Effects
 In Proceedings of the Eighteenth Annual IEEE Symposium on Logic and Computer Science (LICS 2003) Workshop on Logic and Computational
, 2003
"... Making linguistic theory is like specifying a programming language... ..."
Abstract

Cited by 24 (4 self)
 Add to MetaCart
(Show Context)
Making linguistic theory is like specifying a programming language...
A TailRecursive Machine with Stack Inspection
"... Security folklore holds that a security mechanism based on stack inspection is incompatible with a global tail call optimization policy; that an implementation of such a language must allocate memory for a sourcecode tail call, and a program that uses only tail calls (and no other memory allocating ..."
Abstract

Cited by 18 (2 self)
 Add to MetaCart
Security folklore holds that a security mechanism based on stack inspection is incompatible with a global tail call optimization policy; that an implementation of such a language must allocate memory for a sourcecode tail call, and a program that uses only tail calls (and no other memory allocating construct) may nevertheless exhaust the available memory. In this article, we prove this widely held belief wrong. We exhibit an abstract machine for a language with security stack inspection whose space consumption function is equivalent to that of the canonical tail call optimizing abstract machine. Our machine is surprisingly simple and suggests that tail calls are as easy to implement in a security setting as they are in a conventional one.
Types as graphs: Continuations in type logical grammar
, 2005
"... Using the programminglanguage concept of CONTINUATIONS, we propose a new, multimodal analysis of quantification in Type Logical Grammar. Our approach provides a geometric view of insitu quantification in terms of graphs, and motivates the limited use of empty antecedents in derivations. Just as c ..."
Abstract

Cited by 16 (7 self)
 Add to MetaCart
Using the programminglanguage concept of CONTINUATIONS, we propose a new, multimodal analysis of quantification in Type Logical Grammar. Our approach provides a geometric view of insitu quantification in terms of graphs, and motivates the limited use of empty antecedents in derivations. Just as continuations are the tool of choice for reasoning about evaluation order and side effects in programming languages, our system provides a principled, typelogical way to model evaluation order and side effects in natural language. We illustrate with an improved account of quantificational binding, weak crossover, whquestions, superiority, and polarity licensing.
Infinite sets that admit fast exhaustive search
 In Proceedings of the 22nd Annual IEEE Symposium on Logic In Computer Science
, 2007
"... Abstract. Perhaps surprisingly, there are infinite sets that admit mechanical exhaustive search in finite time. We investigate three related questions: What kinds of infinite sets admit mechanical exhaustive search in finite time? How do we systematically build such sets? How fast can exhaustive sea ..."
Abstract

Cited by 15 (8 self)
 Add to MetaCart
(Show Context)
Abstract. Perhaps surprisingly, there are infinite sets that admit mechanical exhaustive search in finite time. We investigate three related questions: What kinds of infinite sets admit mechanical exhaustive search in finite time? How do we systematically build such sets? How fast can exhaustive search over infinite sets be performed? Keywords. Highertype computability and complexity, Kleene–Kreisel functionals, PCF, Haskell, topology. 1.
Run Your Research On the Effectiveness of Lightweight Mechanization
"... Formal models serve in many roles in the programming language community. In its primary role, a model communicates the idea of a language design; the architecture of a language tool; or the essence of a program analysis. No matter which role it plays, however, a faulty model doesn’t serve its purpos ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
(Show Context)
Formal models serve in many roles in the programming language community. In its primary role, a model communicates the idea of a language design; the architecture of a language tool; or the essence of a program analysis. No matter which role it plays, however, a faulty model doesn’t serve its purpose. One way to eliminate flaws from a model is to write it down in a mechanized formal language. It is then possible to state theorems about the model, to prove them, and to check the proofs. Over the past nine years, PLT has developed and explored a lightweight version of this approach, dubbed Redex. In a nutshell, Redex is a domainspecific language for semantic models that is embedded in the Racket programming language. The effort of creating a model in Redex is often no more burdensome than typesetting it with LaTeX; the difference is that Redex comes with tools for the semantics engineering life cycle. In this paper we report on a validation of this form of lightweight mechanization. The largest part of this validation concerns the formalization and exploration of nine ICFP 2009 papers in Redex, an effort that uncovered mistakes in all nine papers. The results suggest that Redexbased lightweight modeling is effective and easy to integrate into the work flow of a semantics engineer. This experience also suggests lessons for the developers of other mechanization tools.