No abstract available.
Improving binding times without explicit CPS-conversion
A major obstacle in partial evaluation (program specialization) is the need for binding time improvements. By reorganizing a source program, the residual programs obtained by specializing the source program may be improved: more computations can be ...
Safe fusion of functional expressions
Large functional programs are often constructed by decomposing each big task into smaller tasks which can be performed by simpler functions. This hierarchical style of developing programs has been found to improve programmers' productivity because ...
Improving the performance of SML garbage collection using application-specific virtual memory management
We improved the performance of garbage collection in the standard ML of New Jersey system by using the virtual memory facilities provided by the Mach kernel. We took advantage of Mach's support for large sparse address spaces and user-defined paging ...
Polymorphic type reconstruction for garbage collection without tags
Several papers, have recently claimed that garbage collection can be performed on untagged data in the presence of ML-style type polymorphism. They rely on the ability to reconstruct the type of any reachable object during garbage collection. The bad ...
Projective ML
We propose a projective lambda calculus as the basis for operations on records. Projections operate on elevations, that is, records with defaults. This calculus extends lambda calculus while keeping its essential properties. We build projective ML ...
Parsers in ML
We present the operational semantics of streams and stream matching as discussed in. Streams are data structures such as lists, but with different primitive operations. Streams not only provide an interface to usual imput/output channels, but may used ...
Interactive modular programming in Scheme
This paper presents a module system and a programming environment designed to support interactive program development in Scheme. The module system extends lexical scoping while maintainig its flavor and benefits and supports mutually recursive modules. ...
Finiteness conditions for fixed point iteration
This paper provides a link between the formulation of static program analyses using the framework of abstract interpretation (popular for functional languages and using the more classical framework of data flow anlysis (popular for imperative languages)...
A syntactic approach to fixed point computation on finite domains
We propose a syntactic approach to performing fixed point computation on finite domains. Finding fixed points in finite domains for monotonic fuctions is an essential task when calculating abstract semantics of functional programs. Previous methods for ...
Abstract interpretation in weak powerdomains
We introduce a class of semantic domains, weak powerdomains, that are intended to serve as value spaces for abstract interpretations in which safety is a concern. We apply them to the analysis of PCF programs. In the classical abstract interpretation ...
Proving memory management invariants for a language based on linear logic
We develop tools for the rigorous formulation and proof of properties of runtime management for a sample programming language based on a linear type system. Two semantics are diescribed, one at a level of observable results of computations and one ...
Proving the correctness of storage representations
Conventional techniques for semantics-directed 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 ...
On extending computational adequacy by data abstraction
Given an abstract data type(ADT), and algebra that specifies it, and an implementation of the data type in a certain language, if the implementation is “correct,” a certain principle of modularity of reasoning holds. Namely, one can safely reason about ...
Parametric type classes
We propose a generalization to Haskell's type classes where a class can have type parameters besides the placeholder variable. We show that this generalization is essential to represent container classes with overloaded data constructor and selector ...
A calculus for overloaded functions with subtyping
We present a simple extension of typed λ-claculus where functions can be overloaded by adding different “pieces of code”. In short, the code of an overloaded function is formed by several branches of code; the branch to execute is chosen, when the ...
Type inference in the presence of overloading, subtyping and recursive types
We present a unified approach to type inference in the presence of overloading and coercions based on the concept of constrained types. We define a generic inference system, show that subtyping and overloading can be treated as a special instance of ...
Global tagging optimization by type inference
Tag handling accounts for a substantial amount of execution cost in latently typed languages such as Common LISP and Scheme, espicially on architectures that provide no special hardware support.
Analysis of recursive types in Lisp-like languages
We introduce a new algorithm to analyze recursive, structured types. It derives information from object uses (accesser functions with type checking), as well as from object allocation. The type description is a form of graph grammar and is naturally ...
Taming the Y operator
In this paper I present a set of conceptually simple but involved techniques used by LIAR, the MIT SCHEME compiler, to generate good code when recursive procedures are specified in terms of suitable versions of the Y operator. The techniques presented ...
The Python compiler for CMU Common Lisp
The Python compiler for CMU Common Lisp has been under development for over five years, and now forms the core of a production quality public domain Lisp implementation. Python synthesizes the good ideas from Lisp compilers and source transformation ...
WCL: Delivering efficient Common Lisp applications under Unix
Common Lisp implementations for Unix have traditionally provided a rich development environment at the expense of an inefficient delivery environment. The goal of WCL is to allow hundreds of Lisp applications to be realistically available at once, ...
Tachyon Common Lisp: an efficient and portable implementation of CLtL2
Tachyon Common Lisp is an efficient and portable implementation of Common Lisp 2nd Edition. The design objective of Tachyon is to apply both advanced optimization technology developed for RISC processors and Lisp optimization techniques. The compiler ...
A confluent calculus of Macro expansion and evaluation
Syntactic abbreviations or macros provide a powerful tool to increase the syntactic expressiveness of programming languages. The expansion of these abbreviations can be modeled with substitutions. This paper presents an operational semantics of macro ...
Reasoning about programs in continuation-passing style.
Plotkin's λ-value calculus is sound but incomplete for reasoning about βeegr;-transformations on programs in continuation-passing style (CPS). To find a complete extension, we define a new, compactifying CPS transformation and an “inverse”mapping, un-...
Back to direct style II: first-class continuations
We continue to investigate the direct-style transformation by extending it to programs requiring call-with-current-continuation (a.k.a. call/cc). The direct style (DS) and the continuation-passing style (CPS) transformations form a Galois connection. ...
Dynamic program parallelization
Static program analysis limits the performance improvements possible from compile-time parallelization. Dynamic program parallelization shifts a portion of the analysis from complie-time to run-time, thereby enabling optimizations whose static ...
Index Terms
- Proceedings of the 1992 ACM conference on LISP and functional programming
Recommendations
Acceptance Rates
Year | Submitted | Accepted | Rate |
---|---|---|---|
LFP '94 | 109 | 30 | 28% |
Overall | 109 | 30 | 28% |