Results 1 
6 of
6
Programmable Applications: Interpreter Meets Interface
 SIGCHI Bulletin
, 1995
"... Current fashion in "userfriendly" softw overreliance on direct manipulation inte: (and thus trhly userfriendly), applicatk faes and domainenriched languages th This paper discusses some of the desigqr ation of such programmable applications,5 "SchemePaint," a graphics application t interfa ..."
Abstract

Cited by 23 (4 self)
 Add to MetaCart
Current fashion in "userfriendly" softw overreliance on direct manipulation inte: (and thus trhly userfriendly), applicatk faes and domainenriched languages th This paper discusses some of the desigqr ation of such programmable applications,5 "SchemePaint," a graphics application t interface with an interpreter for (a "gral; Copyright ) Massachusetts Institu This report describes research done at the Artificial Int Institute of Technology. Support for the laboratory's in part by the Advanced Research Projects Agency of It Naval Research contract N0001489J3202 and by the number MIP9001651.
Proving the Correctness of Storage Representations
"... Conventional techniques for semanticsdirected compiler derivation yield abstract machines that manipulate trees. However, in order to produce a real compiler, one has to represent these trees in memory. In this paper we show how the technique of storagelayout relations (introduced by Hannan [7]) c ..."
Abstract

Cited by 21 (7 self)
 Add to MetaCart
Conventional techniques for semanticsdirected compiler derivation yield abstract machines that manipulate trees. However, in order to produce a real compiler, one has to represent these trees in memory. In this paper we show how the technique of storagelayout relations (introduced by Hannan [7]) can be applied to verify the correctness of storage representations in a very general way. This technique allows us to separate denotational from operational reasoning, so that each can be used when needed. As an example, we show the correctness of a stack implementation of a language including dynamic catch and throw. The representation uses static and dynamic links to thread the environment and continuation through the stack. We discuss other uses of these techniques. 1 Introduction Typical semanticallyderived compiler systems [2, 3, 7, 18, 19] translate the parse trees of the source language into the language of an abstract bytecode machine. This abstract byte code machine typically man...
Partial Evaluation of Callbyvalue lambdacalculus with Sideeffects
 ACM SIGPLAN Symposium on Partial Evaluation and SemanticsBased Program Manipulation (PEPM '97
"... We present a framework of an online partial evaluator for a callby value calculus with destructive updates of data structures. It properly and correctly specializes expressions that contain sideeffects, while preserving pointer equality, which is an important property for programs using updates. O ..."
Abstract

Cited by 5 (5 self)
 Add to MetaCart
We present a framework of an online partial evaluator for a callby value calculus with destructive updates of data structures. It properly and correctly specializes expressions that contain sideeffects, while preserving pointer equality, which is an important property for programs using updates. Our partial evaluator uses a sideeffect analysis to extract immutable data structures and then performs an online specialization using preactions. Once mutable and immutable data structures are separated, partial evaluation is done in sucha way that accessesto immutable ones are performed at specialization time, while accessesto mutable ones are residualized. For the correct residualization of sideeffecting operations, preactions are used to solve various issues, including code elimination, code duplication, and execution order preservation. The preaction mechanism also enablesus to reduceexpressionsthat were residualized when the conventional letexpression approach of Similix was used. Th...
Can Partial Evaluation Improve the Performance of Ray Tracing?
 Natural Science Report, Vol.53, No.1
, 2002
"... This short paper reports our experience on using runtime partial evaluation to improve the performance of ray tracing. By exploiting constant information on objects and light during the ray tracing process, we can produce a specialized ray tracer which runs up to two times faster than the unspeciali ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
This short paper reports our experience on using runtime partial evaluation to improve the performance of ray tracing. By exploiting constant information on objects and light during the ray tracing process, we can produce a specialized ray tracer which runs up to two times faster than the unspecialized version. Thanks to the integration of a partial evaluator into an interpreter, specialization is achieved simply by inserting a pe command. Although the implementation is still prototypical, the experimental results show that partial evaluation does have a role in ray tracing.
Multiway Streams in Scheme
, 1989
"... We present a mechanism for the maintenance of streams based on the Scheme facility of callwithcurrentcontinuation or call/cc. The mechanism supports stream sharing and has overhead cost which is independent of toplevel program parameters if call/cc is implemented in heapbased systems. It is ..."
Abstract
 Add to MetaCart
We present a mechanism for the maintenance of streams based on the Scheme facility of callwithcurrentcontinuation or call/cc. The mechanism supports stream sharing and has overhead cost which is independent of toplevel program parameters if call/cc is implemented in heapbased systems. It is shown how the control structure of call/cc can save programming effort in cases where multiple procedures output to the same stream in irregular order. 1 Introduction In Scheme, a stream is typically implemented as a twoelement cell: one element contains the value of the stream head and the other element contains a procedure which computes the remaining stream tokens. Stream tokens can be grabbed one at a time because, in Scheme, the body of a procedure is not evaluated until the procedure is invoked. This implementation works well for single streams but may have efficiency problems in stream networks. Consider, for example, the very simple network that results from splitting a stream ...
Combinatory Logic and λCalculus for Classical Logic
, 2000
"... Since Griffin's work in 1990, classical logic has been an attractive target for extracting computational contents. However, the classical principle used in Griffin's type system is the doublenegationelimination rule, which prevents one to analyze the intuitionistic part and the purely classical pa ..."
Abstract
 Add to MetaCart
Since Griffin's work in 1990, classical logic has been an attractive target for extracting computational contents. However, the classical principle used in Griffin's type system is the doublenegationelimination rule, which prevents one to analyze the intuitionistic part and the purely classical part separately. By formulating a calculus with J (for the elimination rule of falsehood) and P (for Peirce formula which is concerned with purely classical reasoning) combinators, we can separate these two parts. This paper studies the λPJ calculus with P and J combinators and the λC calculus with C combinator (for the doublenegationelimination rule). We also propose two λcalculi which correspond to PJ and C. We give four classes of reduction rules for each calculus, and systematically study their relationship by simulating reduction rules in one calculus by the corresponding one in the other. It is shown that, by restricting the type of P, simulation succeeds for several choices of reducti...