Walid Taha

dblp:53/5525 · also Walid Mohamed Taha · DBLP profile ↗
← Back
39ranked-venue papers
10as first author
1since 2021 · last 2023
0000-0003-3160-9188ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 28 · 7 first-authorTheory of computation · 5 · 2 first-authorApplied, interdisciplinary, general and emerging computing · 3 · 1 first-authorArtificial intelligence and machine learning · 1Computer networks · 1 · 1 since 2021Security and privacy · 1Human-computer interaction and ubiquitous computing · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Computer networks
1 paper
Network management and operations · 100%
Software engineering, system software, and programming languages
4 papers
Programming languages and type systems · 75% Runtime systems and virtual machines · 21% Program verification · 4%

Topics — the 11 heaviest of 12, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Network management and operations
network configuration
0.712023
Practical Intent-driven Routing Configuration Synthesis · NSDI 2023
Network management and operations › network configuration
network configuration synthesis
0.212023
Practical Intent-driven Routing Configuration Synthesis · NSDI 2023
Network management and operations
network verification
0.212023
Practical Intent-driven Routing Configuration Synthesis · NSDI 2023
Programming languages and type systems › metaprogramming
multi-stage programming
0.232010
Mint: Java multi-stage programming using weak separability · PLDI 2010
Closed Types as a Simple Approach to Safe Imperative Multi-stage Programming · ICALP 2000
Multi-Stage Programming: Axiomatization and Type Safety · ICALP 1998
Programming languages and type systems
type systems
0.142010
Environment classifiers · POPL 2003
Mint: Java multi-stage programming using weak separability · PLDI 2010
Closed Types as a Simple Approach to Safe Imperative Multi-stage Programming · ICALP 2000
Runtime systems and virtual machines › dynamic compilation
run-time code generation
0.112010
Mint: Java multi-stage programming using weak separability · PLDI 2010
Programming languages and type systems › type systems
type soundness
0.132010
Mint: Java multi-stage programming using weak separability · PLDI 2010
Multi-Stage Programming: Axiomatization and Type Safety · ICALP 1998
Environment classifiers · POPL 2003
Program verification
axiomatization
0.011998
Multi-Stage Programming: Axiomatization and Type Safety · ICALP 1998
Programming languages and type systems
language design
0.011998
Multi-Stage Programming: Axiomatization and Type Safety · ICALP 1998
Programming languages and type systems
language semantics
0.011998
Multi-Stage Programming: Axiomatization and Type Safety · ICALP 1998
Programming languages and type systems › type system metatheory
type preservation
0.012003
Environment classifiers · POPL 2003

Methods — techniques the papers use, named apart from their topics

program synthesis · 0.7lightweight java · 0.1formalization · 0.1
YearPublicationVenuePosition
2023 Practical Intent-driven Routing Configuration Synthesis
Sivaramakrishnan Ramanathan, Ying Zhang 0022, Mohab Gawish, Yogesh Mundada, Zhaodong Wang, Sangki Yun, Eric Lippert, Walid Taha, Minlan Yu, Jelena Mirkovic
NSDI8
2018 Safe & robust reachability analysis of hybrid systems
abstract
Hybrid systems—more precisely, their mathematical models—can exhibit behaviors, like Zeno behaviors, that are absent in purely discrete or purely continuous systems. First, we observe that, in this context, the usual definition of reachability—namely, the reflexive and transitive closure of a transition relation—can be unsafe, i.e., it may compute a proper subset of the set of states reachable in finite time from a set of initial states. Therefore, we propose safe reachability, which always computes a superset of the set of reachable states. Second, in safety analysis of hybrid and continuous systems, it is important to ensure that a reachability analysis is also robust w.r.t. small perturbations to the set of initial states and to the system itself, since discrepancies between a system and its mathematical models are unavoidable. We show that, under certain conditions, the best Scott continuous approximation of an analysis A is also its best robust approximation. Finally, we exemplify the gap between the set of reachable states and the supersets computed by safe reachability and its best robust approximation.
Eugenio Moggi, Amin Farjudian, Adam Duracz, Walid Taha
Theor. Comput. Sci.4
2016 Reasoning about multi-stage programs
abstract
Abstract We settle three basic questions that naturally arise when verifying code generators written in multi-stage functional programming languages. First, does adding staging to a language compromise any equalities that hold in the base language? Unfortunately it does, and more care is needed to reason about terms with free variables. Second, staging annotations, as the name “annotations” suggests, are often thought to be orthogonal to the behavior of a program, but when is this formally guaranteed to be true? We give termination conditions that characterize when this guarantee holds. Finally, do multi-stage languages satisfy useful, standard extensional properties, for example, that functions agreeing on all arguments are equivalent? We provide a sound and complete notion of applicative bisimulation, which establishes such properties or, in principle, any valid program equivalence. These results yield important insights into staging and allow us to prove the correctness of quite complicated multi-stage programs.
Jun Inoue 0001, Walid Taha
J. Funct. Program.2
2012 Reasoning about Multi-stage Programs
Jun Inoue 0001, Walid Taha
ESOP2
2012 Virtual Testing for Smart Buildings
abstract
Smart buildings promise to revolutionize the way we live. Applications ranging from climate control to fire management can have significant impact on the quality and cost of these services. However, smart buildings and any technology with direct effect on human safety and life must undergo extensive testing. Virtual testing by means of computer simulation can significantly reduce the cost of testing and, as a result, accelerate the development of novel applications. Unfortunately, building physically-accurate simulation codes can be labor intensive. To address this problem, we propose a framework for rapid, physically-accurate virtual testing. The proposed framework supports analytical modeling of both a discrete distributed system as well as the physical environment that hosts it. The discrete models supported are accurate enough to allow the automatic generation of a dedicated programming framework that will help the developer in the implementation of these systems. The physical environment models supported are equational specifications that are accurate enough to produce running simulation codes. Combined, these two frameworks enable simulating both active systems and physical environments. These simulations can be used to monitor the behavior and gather statistics about the performance of an application in the context of precise virtual experiments. To illustrate the approach, we present models of Heating, Ventilating and Air-Conditioning (HVAC) systems. Using these models, we construct virtual experiments that illustrate how the approach can be used to optimize energy and cost of climate control for a building.
Julien Bruneau 0001, Charles Consel, Marcia Kilchenman O'Malley, Walid Taha, Wail Masry Hannourah
Intelligent Environments4
2011 Release Offset Bounds for Response Time Analysis of P-FRP Using Exhaustive Enumeration
abstract
Functional Reactive Programming (FRP) is a declarative approach to modeling and building reactive systems. Priority-based FRP (P-FRP) is a formalism of FRP that guarantees real-time response. Unlike the classical preemptive model of real-time systems, preempted tasks in P- FRP are aborted and have to restart when higher priority tasks have completed. Due to this abort-restart of nature of preemption, there is no single critical instant of release that leads to Worst-Case Response Time (WCRT) of lower priority P-FRP tasks. At this time, the only method for determining the WCRT is through an exhaustive enumeration of all release offsets of higher priority tasks between the release and deadline of the lower priority task. This makes the computational cost of WCRT dependent on the deadline of a task, and when such deadlines are large the computational costs of this technique make it infeasible even for small task sets. In this paper, we show that the release offsets of higher priority tasks have a lower and upper bound and present techniques to derive these bounds. By enumerating only those release offsets while lie within our derived bounds the number of release scenarios that have to be enumerated is significantly reduced. This leads to lower computational costs and makes determination of the WCRT in P-FRP a practically feasible proposition.
Chaitanya Belwal, Albert Mo Kim Cheng, Walid Taha
TrustCom3
2010 Preliminary Results in Virtual Testing for Smart Buildings
Julien Bruneau 0001, Charles Consel, Marcia Kilchenman O'Malley, Walid Taha, Wail Masry Hannourah
MobiQuitous4
2010 Mint: Java multi-stage programming using weak separability
abstract
Multi-stage programming (MSP) provides a disciplined approach to run-time code generation. In the purely functional setting, it has been shown how MSP can be used to reduce the overhead of abstractions, allowing clean, maintainable code without paying performance penalties. Unfortunately, MSP is difficult to combine with imperative features, which are prevalent in mainstream languages. The central difficulty is scope extrusion, wherein free variables can inadvertently be moved outside the scopes of their binders. This paper proposes a new approach to combining MSP with imperative features that occupies a "sweet spot" in the design space in terms of how well useful MSP applications can be expressed and how easy it is for programmers to understand. The key insight is that escapes (or "anti-quotes") must be weakly separable from the rest of the code, i.e. the computational effects occurring inside an escape that are visible outside the escape are guaranteed to not contain code. To demonstrate the feasibility of this approach, we formalize a type system based on Lightweight Java which we prove sound, and we also provide an implementation, called Mint, to validate both the expressivity of the type system and the effect of staging on the performance of Java programs.
Edwin M. Westbrook, Mathias Ricken, Jun Inoue 0001, Yilong Yao, Tamer Abdelatif, Walid Taha
PLDI6
2009 Exploring the Design Space of Higher-Order Casts
Jeremy G. Siek, Ronald Garcia, Walid Taha
ESOP3
2009 Static consistency checking for verilog wire interconnects: using dependent types to check the sanity of verilog descriptions
abstract
The Verilog hardware description language has padding semantics that allow designers to write descriptions where wires of different bit widths can be interconnected. However, many of these connections are nothing more than bugs inadvertently introduced by the designer and often result in circuits that behave incorrectly or use more resources than required. A similar problem occurs when wires are incorrectly indexed by values (or ranges) that exceed their bounds. These two problems are exacerbated by generate blocks. While desirable for reusability and conciseness, the use of generate blocks to describe circuit families only makes the situation worse as it hides such inconsistencies making them harder to detect. Inconsistencies in the generated code are only exposed after elaboration when the code is fully-expanded.In this paper we show that these inconsistencies can be pinned down prior to elaboration using static analysis.We combine dependent types and constraint generation to reduce the problem of detecting the aforementioned inconsistencies to a satisfiability problem. Once reduced, the problem can easily be solved with a standard satisfiability modulo theories (SMT) solver. In addition, this technique allows us to detect unreachable code when it resides in a block guarded by an unsatisfiable set of constraints. To illustrate these ideas, we develop a type system for Featherweight Verilog (FV), a core calculus of structural Verilog with generative constructs and previously defined elaboration semantics. We prove that a well-typed FV description will always elaborate into an inconsistency-free description. We also provide a freely-available implementation demonstrating our approach.
Cherif R. Salama, Gregory Malecha, Walid Taha, Jim Grundy, John O'Leary
PEPM3
2008 Synthesizable high level hardware descriptions: using statically typed two-level languages to guarantee verilog synthesizability
abstract
Modern hardware description languages support code-generation constructs like generate/endgenerate in Verilog. These constructs are intended to describe regular or parameterized hardware designs and, when used effectively, can make hardware descriptions shorter, more understandable, and more reusable. In practice, however, designers avoid these constructs because it is difficult to understand and predict the properties of the generated code. Is the generated code even type safe? Is it synthesizable? What physical resources (e.g. combinatorial gates and flip-flops) does it require? It is often impossible to answer these questions without first generating the fully-expanded code. In the Verilog and VHDL communities, this generation process is referred to as elaboration.
Jennifer Gillenwater, Gregory Malecha, Cherif R. Salama, Angela Yun Zhu, Walid Taha, Jim Grundy, John O'Leary
PEPM5
2007 Gradual Typing for Objects
Jeremy G. Siek, Walid Taha
ECOOP2
2007 E-FRP with priorities
abstract
E-FRP is declarative language for programming resource-bounded, event-driven systems. The original high-level semantics of E-FRP requires that each event handler execute atomically. This requirement facilitates reasoning about EFRP programs, and therefore it is a desirable feature of the language. But the original compilation strategy requires that each handler complete execution before another event can occur. This implementation choice treats all events equally, in that it forces the upper bound on the time needed to respond to any event to be the same. While this is acceptable for many applications, it is often the case that some events are more urgent than others.
Roumen Kaiabachev, Walid Taha, Angela Yun Zhu
EMSOFT2
2007 The semantics of graphical languages
abstract
Visual notations are pervasive in circuit design, control systems, and increasingly in mainstream programming environments. Yet many of the foundational advances in programming language theory are taking place in the context of textual notations. In order to map such advances to the graphical world, and to take the concerns of the graphical world into account when working with textual formalisms, there is a need for rigorous connections between textual and graphical expressions of computation.
Stephan Ellner, Walid Taha
PEPM2
2007 Concoqtion: indexed types now!
abstract
Almost twenty years after the pioneering efforts of Cardelli, the programming languages community is vigorously pursuing ways to incorporate Fω-style indexed types into programming languages. This paper advocates Concoqtion, a practical approach to adding such highly expressive types to full-fledged programming languages. The approach is applied to MetaOCaml using the Coq proof checker to conservatively extend Hindley-Milner type inference. The implementation of MetaOCaml Concoqtion requires minimal modifications to the syntax, the type checker, and the compiler; and yields a language comparable in notation to the leading proposals. The resulting language provides unlimited expressiveness in the type system while maintaining decidability. Furthermore, programmers can take advantage of a wide range of libraries not only for the programming language but also for the indexed types. Programming in MetaOCaml Concoqtion is illustrated with small examples and a case study implementing a statically-typed domain-specific language.
Seth Fogarty, Emir Pasalic, Jeremy G. Siek, Walid Taha
PEPM4
2006 A Semantic Analysis of C++ Templates
Jeremy G. Siek, Walid Taha
ECOOP2
2006 A monadic approach for avoiding code duplication when staging memoized functions
abstract
Building program generators that do not duplicate generated code can be challenging. At the same time, code duplication can easily increase both generation time and runtime of generated programs by an exponential factor. We identify an instance of this problem that can arise when memoized functions are staged. Without addressing this problem, it would be impossible to effectively stage dynamic programming algorithms. Intuitively, direct staging undoes the effect of memoization. To solve this problem once and for all, and for any function that uses memoization, we propose a staged monadic combinator library. Experimental results confirm that the library works as expected. Preliminary results also indicate that the library is useful even when memoization is not used.
Kedar N. Swadi, Walid Taha, Oleg Kiselyov, Emir Pasalic
PEPM2
2006 Preface
Christian Lengauer, Walid Taha
Sci. Comput. Program.2
2005 Implicitly Heterogeneous Multi-stage Programming
Jason Eckhardt, Roumen Kaiabachev, Emir Pasalic, Kedar N. Swadi, Walid Taha
GPCE5
2004 A methodology for generating verified combinatorial circuits
abstract
High-level programming languages offer significant expressivity but provide little or no guarantees about resource use. Resource-bounded languages --- such as hardware-description languages --- provide strong guarantees about the runtime behavior of computations but often lack mechanisms that allow programmers to write more structured, modular, and reusable programs. To overcome this basic tension in language design, recent work advocated the use of Resource-aware Programming (RAP) languages, which take into account the natural distinction between the development platform and the deployment platform for resource-constrained software.This paper investigates the use of RAP languages for the generation of combinatorial circuits. The key challenge that we encounter is that the RAP approach does not safely admit a mechanism to express a posteriori (post-generation) optimizations. The paper proposes and studies the use of abstract interpretation to overcome this problem. The approach is illustrated using an in-depth analysis of the Fast Fourier Transform (FFT). The generated computations are comparable to those generated by FFTW.
Oleg Kiselyov, Kedar N. Swadi, Walid Taha
EMSOFT3
2004 ML-Like Inference for Classifiers
Cristiano Calcagno, Eugenio Moggi, Walid Taha
ESOP3
2003 Generating Heap-Bounded Programs in a Functional Setting
Walid Taha, Stephan Ellner, Hongwei Xi 0001
EMSOFT1
2003 Implementing Multi-stage Languages Using ASTs, Gensym, and Reflection
Cristiano Calcagno, Walid Taha, Liwen Huang, Xavier Leroy
GPCE2
2003 Staged Notational Definitions
Walid Taha, Patricia Johann
GPCE1
2003 Environment classifiers
abstract
This paper proposes and develops the basic theory for a new approach to typing multi-stage languages based a notion of environment classifiers. This approach involves explicit but lightweight tracking -- at type-checking time -- of the origination environment for future-stage computations. Classification is less restrictive than the previously proposed notions of closedness, and allows for both a more expressive typing of the run construct and for a unifying account of typed multi-stage programmin.The proposed approach to typing requires making cross-stage persistence (CSP) explicit in the language. At the same time, it offers concrete new insights into the notion of levels and in turn into CSP itself. Type safety is established in the simply-typed setting. As a first step toward introducing classifiers to the Hindley-Milner setting, we propose an approach to integrating the two, and prove type preservation in this setting.
Walid Taha, Michael Florentin Nielsen
POPL1
2003 Semantics, Applications, and Implementation of Program Generation
abstract
This special issue of the Journal of Functional Programming follows up on the First International ACM SIGPLAN Workshop on the Semantics, Applications, and Implementation of Program Generators (SAIG 2000). The special issue contains eight full length papers, which were received based on an open call for papers. Six of these papers are substantially extended revisions of papers presented at the workshop itself.
Walid Taha
J. Funct. Program.1
2003 "Essentials of Programming Languages" (2nd ed) by Daniel P. Friedman, Mitchell Wand and Christopher T. Haynes, MIT Press, ISBN 0-262-06217-8, 2001
abstract
Having been out of academia for a number of years, I jumped at the chance to review these volumes, seeing this as an opportunity to get back up to speed with what was happening with the functional programming community.To give you some background, the point where I left to join industry was just after the world started using monads to structure their functional creations and I wondered what had come along since then.The two volumes actually draw together papers from the first two Scottish Functional Programming workshops.As such, the collected works read far more like conference proceedings, with each paper standing alone, than textbooks.However, the two volumes do succeed in bringing together papers under various headings:• parallel systems and programming, • type systems, • architectures and implementations, • applications, • theory,
Walid Taha
J. Funct. Program.1
2002 Tagless staged interpreters for typed languages
abstract
Multi-stage programming languages provide a convenient notation for explicitly staging programs. Staging a definitional interpreter for a domain specific language is one way of deriving an implementation that is both readable and efficient. In an untyped setting, staging an interpreter "removes a complete layer of interpretive overhead", just like partial evaluation. In a typed setting however, Hindley-Milner type systems do not allow us to exploit typing information in the language being interpreted. In practice, this can mean a slowdown cost by a factor of three or mor.Previously, both type specialization and tag elimination were applied to this problem. In this paper we propose an alternative approach, namely, expressing the definitional interpreter in a dependently typed programming language. We report on our experience with the issues that arise in writing such an interpreter and in designing such a language. .To demonstrate the soundness of combining staging and dependent types in a general sense, we formalize our language (called Meta-D) and prove its type safety. To formalize Meta-D, we extend Shao, Saha, Trifonov and Papaspyrou's λH language to a multi-level setting. Building on λH allows us to demonstrate type safety in a setting where the type language contains all the calculus of inductive constructions, but without having to repeat the work needed for establishing the soundness of that system.
Emir Pasalic, Walid Taha, Tim Sheard
ICFP2
2002 Event-Driven FRP
Zhanyong Wan, Walid Taha, Paul Hudak
PADL2
2002 Towards a primitive higher order calculus of broadcasting systems
abstract
Ethernet-style broadcast is pervasive style of computer communication.In this style,the medium is single nameless channel.Previous work on modelling such systems proposed .rst order process calculus called CBS.In this paper, we propose fundamentally different calculus called HOBS.Compared to CBS, HOBS 1) is higher order rather than first order, 2) supports dynamic subsystem encapsulation rather than static,and 3) does not require an "underlying language" to be Turing-complete. Moving to higher order calculus is key to increasing the expressivity of the primitive calculus and alleviating the need for an underlying language. The move, however, raises the need for significantly more machinery to establish the basic properties of the new calculus.This paper develops the basic theory for HOBS and presents two example programs that illustrate programming in this language. The key technical underpinning is an adaptation of Howe's method to HOBS to prove that bisimulation is congruence. From this result, HOBS is shown to embed the lazy λ-calculus.
Karol Ostrovsky, K. V. S. Prasad, Walid Taha
PPDP3
2001 Macros as Multi-Stage Computations: Type-Safe, Generative, Binding Macros in MacroML
abstract
With few exceptions, macros have traditionally been viewed as operations on syntax trees or even on plain strings. This view makes macros seem ad hoc, and is at odds with two desirable features of contemporary typed functional languages: static typing and static scoping. At a deeper level, there is a need for a simple, usable semantics for macros. This paper argues that these problems can be addressed by formally viewing macros as multi-stage computations. This view eliminates the need for freshness conditions and tests on variable names, and provides a compositional interpretation that can serve as a basis for designing a sound type system for languages supporting macros, or even for compilation. To illustrate our approach, we develop and present MacroML, an extension of ML that supports inlining, recursive macros, and the definition of new binding constructs. The latter is subtle, and is the most novel addition in a statically typed setting. The semantics of a core subset of MacroML is given by an interpretation into MetaML, a statically-typed multi-stage programming language. It is then easy to show that MacroML is stage- and type-safe: macro expansion does not depend on runtime evaluation, and both stages do not "go wrong.
Steven E. Ganz, Amr Sabry, Walid Taha
ICFP3
2001 Real-Time FRP
abstract
Functional reactive programming (FRP) is a declarative programming paradigm where the basic notions are continuous, time-varying behaviors and discrete, event-based reactivity. FRP has been used successfully in many reactive programming domains such as animation, robotics, and graphical user interfaces. The success of FRP in these domains encourages us to consider its use in real-time applications, where it is crucial that the cost of running a program be bounded and known before run-time. But previous work on the semantics and implementation of FRP was not explicitly concerned about the issues of cost. In fact, the resource consumption of FRP programs in the current implementation is often hard to predict. As a first step towards addressing these concerns, this paper presents real-time FRP (RT-FRP), a statically-typed language where the time and space cost of each execution step for a given program is statically bounded. To take advantage of existing work on languages with bounded resources, we split RT-FRP into two parts: a reactive part that captures the essential ingredients of FRP programs, and a base language part that can be instantiated to any generic programming language that has been shown to be terminating and resource-bounded. This allows us to focus on the issues specific to RT-FRP, namely, two forms of recursion. After presenting the operational explanation of what can go wrong due to the presence of recursion, we show how the typed version of the language is terminating and resource-bounded. Most of our FRP programs are expressible directly in RT. The rest are expressible via a simple mechanism that integrates RT-FRP with the base language.
Zhanyong Wan, Walid Taha, Paul Hudak
ICFP2
2000 Closed Types as a Simple Approach to Safe Imperative Multi-stage Programming
Cristiano Calcagno, Eugenio Moggi, Walid Taha
ICALP3
2000 A Sound Reduction Semantics for Untyped CBN Multi-stage Computation. Or, the Theory of MetaML is Non-trivial (Extended Abstract)
abstract
A multi-stage computation is one involving more than one stage of execution. MetaML is a language for programming multi-stage computations. Previous studies presented big-step semantics, categorical semantics, and sound type systems for MetaML. In this paper, we report on a confluent and sound reduction semantics for untyped call-by name (CBN) MetaML. The reduction semantics can be used to formally justify some optimization performed by a CBN MetaML implementation. The reduction semantics demonstrates that non-trivial equalities hold for object-code, even in the untyped setting. The paper also emphasizes that adding intensional analysis (that is, taking-apart object programs) to MetaML remains an interesting open problem.
Walid Taha
PEPM1
2000 MetaML and multi-stage programming with explicit annotations
Walid Taha, Tim Sheard
Theor. Comput. Sci.1
1999 An Idealized MetaML: Simpler, and More Expressive
Eugenio Moggi, Walid Taha, Zine-El-Abidine Benaissa, Tim Sheard
ESOP2
1998 Multi-Stage Programming: Axiomatization and Type Safety
Walid Taha, Zine-El-Abidine Benaissa, Tim Sheard
ICALP1
1997 Multi-Stage Programming
abstract
No abstract available.
Walid Taha, Tim Sheard
ICFP1
1997 Multi-Stage Programming with Explicit Annotations
abstract
We introduce MetaML, a statically-typed multi-stage programming language extending Nielson and Nielson's two stage notation to an arbitrary number of stages. MetaML extends previous work by introducing four distinct staging annotations which generalize those published previously [25, 12, 7, 6]We give a static semantics in which type checking is done once and for all before the first stage, and a dynamic semantics which introduces a new concept of cross-stage persistence, which requires that variables available in any stage are also available in all future stages.We illustrate that staging is a manual form of binding time analysis. We explain why, even in the presence of automatic binding time analysis, explicit annotations are useful, especially for programs with more than two stages.A thesis of this paper is that multi-stage languages are useful as programming languages in their own right, and should support features that make it possible for programmers to write staged computations without significantly changing their normal programming style. To illustrate this we provide a simple three stage example, and an extended two-stage example elaborating a number of practical issues.
Walid Taha, Tim Sheard
PEPM1