VLDB 2026 Research / reviewers in the wild / expert
Stephen Chang 0001
dblp:37/5018-1
· DBLP profile ↗
9ranked-venue papers
6as first author
2since 2021 · last 2026
0000-0002-4760-0658ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 9 · 6 first-author · 2 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Mixing visual and textual code
Leif Andersen, Michael Ballantyne, Cameron Moy, Matthias Felleisen, Stephen Chang 0001 |
J. Funct. Program. | 5 |
| 2024 | Type Tailoring
Ashton Wiersdorf, Stephen Chang 0001, Matthias Felleisen, Ben Greenman |
ECOOP | 2 |
| 2020 | Dependent type systems as macrosabstractWe present Turnstile+, a high-level, macros-based metaDSL for building dependently typed languages. With it, programmers may rapidly prototype and iterate on the design of new dependently typed features and extensions. Or they may create entirely new DSLs whose dependent type ``power'' is tailored to a specific domain. Our framework's support of language-oriented programming also makes it suitable for experimenting with systems of interacting components, e.g., a proof assistant and its companion DSLs. This paper explains the implementation details of Turnstile+, as well as how it may be used to create a wide-variety of dependently typed languages, from a lightweight one with indexed types, to a full spectrum proof assistant, complete with a tactic system and extensions for features like sized types and SMT interaction. Stephen Chang 0001, Michael Ballantyne, Milo Turner, William J. Bowman |
Proc. ACM Program. Lang. | 1 |
| 2018 | Symbolic types for lenient symbolic executionabstractWe present lambda_sym, a typed λ-calculus for lenient symbolic execution , where some language constructs do not recognize symbolic values. Its type system, however, ensures safe behavior of all symbolic values in a program. Our calculus extends a base occurrence typing system with symbolic types and mutable state, making it a suitable model for both functional and imperative symbolically executed languages. Naively allowing mutation in this mixed setting introduces soundness issues, however, so we further add concreteness polymorphism , which restores soundness without rejecting too many valid programs. To show that our calculus is a useful model for a real language, we implemented Typed Rosette, a typed extension of the solver-aided Rosette language. We evaluate Typed Rosette by porting a large code base, demonstrating that our type system accommodates a wide variety of symbolically executed programs. Stephen Chang 0001, Alex Knauth, Emina Torlak |
Proc. ACM Program. Lang. | 1 |
| 2017 | Type systems as macrosabstractWe present Turnstile, a metalanguage for creating typed embedded languages. To implement the type system, programmers write type checking rules resembling traditional judgment syntax. To implement the semantics, they incorporate elaborations into these rules. Turnstile critically depends on the idea of linguistic reuse. It exploits a macro system in a novel way to simultaneously type check and rewrite a surface program into a target language. Reusing a macro system also yields modular implementations whose rules may be mixed and matched to create other languages. Combined with typical compiler and runtime reuse, Turnstile produces performant typed embedded languages with little effort. Stephen Chang 0001, Alex Knauth, Ben Greenman |
POPL | 1 |
| 2017 | Super 8 languages for making movies (functional pearl)abstractThe Racket doctrine tells developers to narrow the gap between the terminology of a problem domain and general programming constructs by creating languages instead of just plain programs. This pearl illustrates this point with the creation of a relatively simple domain-specific language for editing videos. To produce the video proceedings of a conference, for example, video professionals traditionally use "non-linear" GUI editors to manually edit each talk, despite the repetitive nature of the process. As it turns out, video editing naturally splits the work into a declarative phase and an imperative rendering phase at the end. Hence it is natural to create a functional-declarative language for the first phase, which reduces a lot of manual labor. This user-facing DSL utilizes a second, internal DSL to implement the second phase, which is an interface to a general, low-level C library. Finally, we inject type checking into our language via another DSL that supports programming in the language of type formalisms. In short, the development of the video editing language cleanly demonstrates how the Racket doctrine naturally leads to the creation of language hierarchies, analogous to the hierarchies of modules found in conventional functional languages. Leif Andersen, Stephen Chang 0001, Matthias Felleisen |
Proc. ACM Program. Lang. | 2 |
| 2014 | Profiling for lazinessabstractWhile many programmers appreciate the benefits of lazy programming at an abstract level, determining which parts of a concrete program to evaluate lazily poses a significant challenge for most of them. Over the past thirty years, experts have published numerous papers on the problem, but developing this level of expertise requires a significant amount of experience. Stephen Chang 0001, Matthias Felleisen |
POPL | 1 |
| 2013 | Laziness by Need
Stephen Chang 0001 |
ESOP | 1 |
| 2012 | The Call-by-Need Lambda Calculus, Revisited
Stephen Chang 0001, Matthias Felleisen |
ESOP | 1 |