VLDB 2026 Research / reviewers in the wild / expert
Walid Taha
dblp:53/5525 · also Walid Mohamed Taha
· DBLP profile ↗
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
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Network management and operations
network configuration |
0.7 | 1 | 2023 | Practical Intent-driven Routing Configuration Synthesis · NSDI 2023 |
Network management and operations › network configuration
network configuration synthesis |
0.2 | 1 | 2023 | Practical Intent-driven Routing Configuration Synthesis · NSDI 2023 |
Network management and operations
network verification |
0.2 | 1 | 2023 | Practical Intent-driven Routing Configuration Synthesis · NSDI 2023 |
Programming languages and type systems › metaprogramming
multi-stage programming |
0.2 | 3 | 2010 | 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.1 | 4 | 2010 | 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.1 | 1 | 2010 | Mint: Java multi-stage programming using weak separability · PLDI 2010 |
Programming languages and type systems › type systems
type soundness |
0.1 | 3 | 2010 | 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.0 | 1 | 1998 | Multi-Stage Programming: Axiomatization and Type Safety · ICALP 1998 |
Programming languages and type systems
language design |
0.0 | 1 | 1998 | Multi-Stage Programming: Axiomatization and Type Safety · ICALP 1998 |
Programming languages and type systems
language semantics |
0.0 | 1 | 1998 | Multi-Stage Programming: Axiomatization and Type Safety · ICALP 1998 |
Programming languages and type systems › type system metatheory
type preservation |
0.0 | 1 | 2003 | Environment classifiers · POPL 2003 |
Methods — techniques the papers use, named apart from their topics
program synthesis · 0.7lightweight java · 0.1formalization · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 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 |
NSDI | 8 |
| 2018 | Safe & robust reachability analysis of hybrid systemsabstractHybrid 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 programsabstractAbstract 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 |
ESOP | 2 |
| 2012 | Virtual Testing for Smart BuildingsabstractSmart 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 Environments | 4 |
| 2011 | Release Offset Bounds for Response Time Analysis of P-FRP Using Exhaustive EnumerationabstractFunctional 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 |
TrustCom | 3 |
| 2010 | Preliminary Results in Virtual Testing for Smart Buildings
Julien Bruneau 0001, Charles Consel, Marcia Kilchenman O'Malley, Walid Taha, Wail Masry Hannourah |
MobiQuitous | 4 |
| 2010 | Mint: Java multi-stage programming using weak separabilityabstractMulti-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 |
PLDI | 6 |
| 2009 | Exploring the Design Space of Higher-Order Casts
Jeremy G. Siek, Ronald Garcia, Walid Taha |
ESOP | 3 |
| 2009 | Static consistency checking for verilog wire interconnects: using dependent types to check the sanity of verilog descriptionsabstractThe 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 |
PEPM | 3 |
| 2008 | Synthesizable high level hardware descriptions: using statically typed two-level languages to guarantee verilog synthesizabilityabstractModern 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 |
PEPM | 5 |
| 2007 | Gradual Typing for Objects
Jeremy G. Siek, Walid Taha |
ECOOP | 2 |
| 2007 | E-FRP with prioritiesabstractE-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 |
EMSOFT | 2 |
| 2007 | The semantics of graphical languagesabstractVisual 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 |
PEPM | 2 |
| 2007 | Concoqtion: indexed types now!abstractAlmost 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 |
PEPM | 4 |
| 2006 | A Semantic Analysis of C++ Templates
Jeremy G. Siek, Walid Taha |
ECOOP | 2 |
| 2006 | A monadic approach for avoiding code duplication when staging memoized functionsabstractBuilding 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 |
PEPM | 2 |
| 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 |
GPCE | 5 |
| 2004 | A methodology for generating verified combinatorial circuitsabstractHigh-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 |
EMSOFT | 3 |
| 2004 | ML-Like Inference for Classifiers
Cristiano Calcagno, Eugenio Moggi, Walid Taha |
ESOP | 3 |
| 2003 | Generating Heap-Bounded Programs in a Functional Setting
Walid Taha, Stephan Ellner, Hongwei Xi 0001 |
EMSOFT | 1 |
| 2003 | Implementing Multi-stage Languages Using ASTs, Gensym, and Reflection
Cristiano Calcagno, Walid Taha, Liwen Huang, Xavier Leroy |
GPCE | 2 |
| 2003 | Staged Notational Definitions
Walid Taha, Patricia Johann |
GPCE | 1 |
| 2003 | Environment classifiersabstractThis 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 |
POPL | 1 |
| 2003 | Semantics, Applications, and Implementation of Program GenerationabstractThis 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, 2001abstractHaving 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 languagesabstractMulti-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 |
ICFP | 2 |
| 2002 | Event-Driven FRP
Zhanyong Wan, Walid Taha, Paul Hudak |
PADL | 2 |
| 2002 | Towards a primitive higher order calculus of broadcasting systemsabstractEthernet-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 |
PPDP | 3 |
| 2001 | Macros as Multi-Stage Computations: Type-Safe, Generative, Binding Macros in MacroMLabstractWith 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 |
ICFP | 3 |
| 2001 | Real-Time FRPabstractFunctional 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 |
ICFP | 2 |
| 2000 | Closed Types as a Simple Approach to Safe Imperative Multi-stage Programming
Cristiano Calcagno, Eugenio Moggi, Walid Taha |
ICALP | 3 |
| 2000 | A Sound Reduction Semantics for Untyped CBN Multi-stage Computation. Or, the Theory of MetaML is Non-trivial (Extended Abstract)abstractA 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 |
PEPM | 1 |
| 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 |
ESOP | 2 |
| 1998 | Multi-Stage Programming: Axiomatization and Type Safety
Walid Taha, Zine-El-Abidine Benaissa, Tim Sheard |
ICALP | 1 |
| 1997 | Multi-Stage ProgrammingabstractNo abstract available. Walid Taha, Tim Sheard |
ICFP | 1 |
| 1997 | Multi-Stage Programming with Explicit AnnotationsabstractWe 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 |
PEPM | 1 |