Alex Knauth

dblp:192/0342 · DBLP profile ↗
← Back
3ranked-venue papers
0as first author
1since 2021 · last 2023
0009-0006-7286-0044ORCID · corroborated

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

Software engineering, systems software and programming languages · 3 · 1 since 2021

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.

Software engineering, system software, and programming languages
3 papers
Programming languages and type systems · 89% Program analysis · 9% Compilers and program optimization · 2%

Topics — the 7 heaviest of 9, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems
extensibility
0.712023
Rhombus: A New Spin on Macros without All the Parentheses · Proc. ACM Program. Lang. 2023
Programming languages and type systems › metaprogramming
macro systems
0.712023
Rhombus: A New Spin on Macros without All the Parentheses · Proc. ACM Program. Lang. 2023
Programming languages and type systems
type systems
0.622018
Symbolic types for lenient symbolic execution · Proc. ACM Program. Lang. 2018
Type systems as macros · POPL 2017
Programming languages and type systems › type inference
occurrence typing
0.312018
Symbolic types for lenient symbolic execution · Proc. ACM Program. Lang. 2018
Program analysis
symbolic execution
0.312018
Symbolic types for lenient symbolic execution · Proc. ACM Program. Lang. 2018
Programming languages and type systems › metaprogramming
macros
0.312017
Type systems as macros · POPL 2017
Programming languages and type systems
metaprogramming
0.212023
Rhombus: A New Spin on Macros without All the Parentheses · Proc. ACM Program. Lang. 2023

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

macro expansion protocol · 0.7type system design · 0.3symbolic execution · 0.3macro system · 0.3elaboration · 0.3
YearPublicationVenuePosition
2023 Rhombus: A New Spin on Macros without All the Parentheses
abstract
Rhombus is a new language that is built on Racket. It offers the same kind of language extensibility as Racket itself, but using traditional (infix) notation. Although Rhombus is far from the first language to support Lisp-style macros without Lisp-style parentheses, Rhombus offers a novel synthesis of macro technology that is practical and expressive. A key element is the use of multiple binding spaces for context-specific sublanguages. For example, expressions and pattern-matching forms can use the same operators with different meanings and without creating conflicts. Context-sensitive bindings, in turn, facilitate a language design that reduces the notational distance between the core language and macro facilities. For example, repetitions can be defined and used in binding and expression contexts generally, which enables a smoother transition from programming to metaprogramming. Finally, since handling static information (such as types) is also a necessary part of growing macros beyond Lisp, Rhombus includes support in its expansion protocol for communicating static information among bindings and expressions. The Rhombus implementation demonstrates that all of these pieces can work together in a coherent and user-friendly language.
Matthew Flatt, Taylor Allred, Nia Angle, Stephen De Gabrielle, Robert Bruce Findler, Jack Firth, Kiran Gopinathan, Ben Greenman, Siddhartha Kasivajhula, Alex Knauth, Jay A. McCarthy, Sam Phillips, Sorawee Porncharoenwase, Jens Axel Søgaard, Sam Tobin-Hochstadt
Proc. ACM Program. Lang.10
2018 Symbolic types for lenient symbolic execution
abstract
We 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.2
2017 Type systems as macros
abstract
We 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
POPL2