Results 1 - 10
of
12
An Introduction to Partial Evaluation
- ACM Computing Surveys
, 1996
"... Partial evaluation provides a unifying paradigm for a broad spectrum of work in ..."
Abstract
-
Cited by 120 (0 self)
- Add to MetaCart
Partial evaluation provides a unifying paradigm for a broad spectrum of work in
Towards Partial Evaluation of Full Scheme
- Reflection 96
, 1996
"... We present a binding-time analysis for Scheme which enables an offline partial evaluator to successfully treat Scheme's reflective features eval, apply, and the control operator call/cc. Additionally, our analysis empowers the specializer to select the most efficient representation for each object. ..."
Abstract
-
Cited by 12 (4 self)
- Add to MetaCart
We present a binding-time analysis for Scheme which enables an offline partial evaluator to successfully treat Scheme's reflective features eval, apply, and the control operator call/cc. Additionally, our analysis empowers the specializer to select the most efficient representation for each object. This removes some limitations of previous specializers regarding the use of higher-order functions. The theoretical development is backed by an implementation. Keywords: partial evaluation of reflective language features, meta-computation The programming language Scheme [20] is an ideal vehicle for meta-computation, specifically for partial evaluation. Part of the appropriateness of Scheme for meta-computation tasks derives from its reflective features: eval [27], which reflects the external representation of, say, a procedure to a functional value, apply, which reflects lists to argument lists, and call/cc 1 , which makes the continuation of the current expression available as a proced...
Partial Evaluation of Call-by-value lambda-calculus with Side-effects
- ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based 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 side-effect 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 side-effecting 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 let-expression approach of Similix was used. Th...
Distributed Partial Evaluation
- Parallel Symbolic Computation: PASCO ’97
, 1997
"... Partial evaluation is an automatic program transformation that optimizes programs by specialization. We speed up the specialization process by utilizing the natural coarse-grained parallelism inherent in the partial evaluation process. We have supplemented an existing partial evaluation system for t ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Partial evaluation is an automatic program transformation that optimizes programs by specialization. We speed up the specialization process by utilizing the natural coarse-grained parallelism inherent in the partial evaluation process. We have supplemented an existing partial evaluation system for the Scheme programming language by a farm-of-workers model for parallel partial evaluation in a network of loosely coupled workstations. Our implementation speeds up specialization by a factor of 2--3 on 6 processors. Keywords functional programming, automatic program transformation, partial evaluation 1 Introduction Partial evaluation is a powerful program-specialization technique based on constant propagation. Given the static (known) parameters of a source program, partial evaluation constructs a residual program---an optimized, specialized version of the program, which on application to the remaining dynamic parameters produces the same result as the original program applied to all pa...
Compiler Construction Using Scheme
- In Functional programming languages in education (FPLE), LNCS 1022
, 1995
"... This paper describes a course in compiler design that focuses on the Scheme implementation of a Scheme compiler that generates native assembly code for a real architecture. The course is suitable for advanced undergraduate and beginning graduate students. It is intended both to provide a general kno ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
This paper describes a course in compiler design that focuses on the Scheme implementation of a Scheme compiler that generates native assembly code for a real architecture. The course is suitable for advanced undergraduate and beginning graduate students. It is intended both to provide a general knowledge about compiler design and implementation and to serve as a springboard to more advanced courses. Although this paper concentrates on the implementation of a compiler, an outline for an advanced topics course that builds upon the compiler is also presented.
Abstraction and Performance from Explicit Monadic Reflection
, 1999
"... Much of the monadic programming literature gets the types right but the abstraction wrong. Using monadic parsing as the motivating example, we demonstrate standard monadic programs in Scheme, recognize how they violate abstraction boundaries, and recover clean abstraction crossings through monadic r ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Much of the monadic programming literature gets the types right but the abstraction wrong. Using monadic parsing as the motivating example, we demonstrate standard monadic programs in Scheme, recognize how they violate abstraction boundaries, and recover clean abstraction crossings through monadic reflection. Once monadic reflection is made explicit, it is possible to construct a grammar for monadic programming. This grammar, in turn, enables the redefinition of the monadic operators as macros that eliminate at expansion time the overhead imposed by functional representations. The result is very efficient monadic programs; for parsing, the output code is competitive with good handcrafted parsers.
Practical aspects of multi-stage programming, rice University
, 2004
"... Abstract. High-level languages offer abstraction mechanisms that can reduce development time and improve software quality. But abstraction mechanisms often have an accumulative runtime overhead that can discourage their use. Multi-stage programming (MSP) languages offer constructs that make it possi ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Abstract. High-level languages offer abstraction mechanisms that can reduce development time and improve software quality. But abstraction mechanisms often have an accumulative runtime overhead that can discourage their use. Multi-stage programming (MSP) languages offer constructs that make it possible to use abstraction mechanisms without paying a runtime overhead. This paper studies applying MSP to implementing dynamic programming (DP) problems. The study reveals that staging high-level implementations of DP algorithms naturally leads to a code explosion problem. In addition, it is common that high-level languages are not designed to deliver the kind of performance that is desirable in implementations of such algorithms. The paper proposes a solution to each of these two problems. Staged memoization is used for code explosion, and a kind of “offshoring ” translation is used to address the second. For basic DP problems, the performance of the resulting specialized C implementations is almost always better than the hand-written generic C implementations. 1
Parameterized LR Parsing
, 2004
"... Common LR parser generators lack abstraction facilities for defining recurring patterns of productions. Although there are generators capable of supporting regular expressions on the right hand side of productions, no generator supports user defined patterns in grammars. ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Common LR parser generators lack abstraction facilities for defining recurring patterns of productions. Although there are generators capable of supporting regular expressions on the right hand side of productions, no generator supports user defined patterns in grammars.
UNIVERSITY OF MINNESOTA This
, 2007
"... is to certify that I have examined this copy of a doctoral thesis by ..."
Compiler Construction in a Functional Setting
, 1997
"... This paper discusses author's experience in using a functional language as the vehicle for teaching compiler construction. The course has been taught several times at author's university with increasing success. The main claim is that the use of a functional language has allowed to present more ..."
Abstract
- Add to MetaCart
This paper discusses author's experience in using a functional language as the vehicle for teaching compiler construction. The course has been taught several times at author's university with increasing success. The main claim is that the use of a functional language has allowed to present more algorithms and that they are better understood than when an imperative language is used. Also, students have been able to study first, and to write afterwards, significant pieces of a compiler with less effort. Detailed examples of these advantages in every compiler phase are given in the paper. 1

