Zachary Palmer

dblp:70/10322 · DBLP profile ↗
← Back
8ranked-venue papers
5as first author
1since 2021 · last 2024
0000-0003-2286-1189ORCID · verified

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

Software engineering, systems software and programming languages · 8 · 5 first-author · 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 · 69% Program analysis · 30% Compilers and program optimization · 1%

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

TopicWeightPapersLastEvidence papers
Programming languages and type systems
functional programming
0.812024
Intensional Functions · Proc. ACM Program. Lang. 2024
Programming languages and type systems › language semantics › formal semantics
operational semantics
0.812024
Intensional Functions · Proc. ACM Program. Lang. 2024
Programming languages and type systems
type systems
0.812024
Intensional Functions · Proc. ACM Program. Lang. 2024
Program analysis › static analysis › interprocedural analysis
context-sensitive analysis
0.412019
Higher-order Demand-driven Program Analysis · ACM Trans. Program. Lang. Syst. 2019
Program analysis › data flow analysis
flow-sensitive analysis
0.412019
Higher-order Demand-driven Program Analysis · ACM Trans. Program. Lang. Syst. 2019
Programming languages and type systems › computational effects
monads
0.212024
Intensional Functions · Proc. ACM Program. Lang. 2024
Programming languages and type systems
metaprogramming
0.112011
Backstage Java: making a difference in metaprogramming · OOPSLA 2011

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

type soundness proof · 0.8operational semantics · 0.8defunctionalization · 0.8pushdown automaton · 0.4demand-driven lookup · 0.4
YearPublicationVenuePosition
2024 Intensional Functions
abstract
Functions in functional languages have a single elimination form — application — and cannot be compared, hashed, or subjected to other non-application operations. These operations can be approximated via defunctionalization: functions are replaced with first-order data and calls are replaced with invocations of a dispatch function. Operations such as comparison may then be implemented for these first-order data to approximate e.g. deduplication of continuations in algorithms such as unbounded searches. Unfortunately, this encoding is tedious, imposes a maintenance burden, and obfuscates the affected code. We introduce an alternative in intensional functions , a language feature which supports the definition of non-application operations in terms of a function’s definition site and closure-captured values. First-order data operations may be defined on intensional functions without burdensome code transformation. We give an operational semantics and type system and prove their formal properties. We further define intensional monads , whose Kleisli arrows are intensional functions, enabling monadic values to be similarly subjected to additional operations.
Zachary Palmer, Nathaniel Wesley Filardo, Ke Wu 0015
Proc. ACM Program. Lang.1
2020 A Set-Based Context Model for Program Analysis
Leandro Facchinetti, Zachary Palmer, Scott F. Smith 0001, Ke Wu 0015, Ayaka Yorihiro
APLAS2
2020 Higher-order demand-driven symbolic evaluation
abstract
Symbolic backwards execution (SBE) is a useful variation on standard forward symbolic evaluation; it allows a symbolic evaluation to start anywhere in the program and proceed by executing in reverse to the program start. SBE brings goal-directed reasoning to symbolic evaluation and has proven effective in e.g. automated test generation for imperative languages. In this paper we define DDSE, a novel SBE which operates on a functional as opposed to imperative language; furthermore, it is defined as a natural extension of a backwards-executing interpreter. We establish the soundness of DDSE and define a test generation algorithm for this toy language. We report on an initial reference implementation to confirm the correctness of the principles.
Zachary Palmer, Theodore Park, Scott F. Smith 0001, Shiwei Weng
Proc. ACM Program. Lang.1
2019 Higher-order Demand-driven Program Analysis
abstract
Developing accurate and efficient program analyses for languages with higher-order functions is known to be difficult. Here we define a new higher-order program analysis, Demand-Driven Program Analysis (DDPA), which extends well-known demand-driven lookup techniques found in first-order program analyses to higher-order programs. This task presents several unique challenges to obtain good accuracy, including the need for a new method for demand-driven lookup of non-local variable values. DDPA is flow- and context-sensitive and provably polynomial-time. To efficiently implement DDPA, we develop a novel pushdown automaton metaprogramming framework, the Pushdown Reachability automaton. The analysis is formalized and proved sound, and an implementation is described.
Leandro Facchinetti, Zachary Palmer, Scott F. Smith 0001
ACM Trans. Program. Lang. Syst.2
2017 Relative Store Fragments for Singleton Abstraction
Leandro Facchinetti, Zachary Palmer, Scott F. Smith 0001
SAS2
2016 Higher-Order Demand-Driven Program Analysis
abstract
We explore a novel approach to higher-order program analysis that brings ideas of on-demand lookup from first-order CFL-reachability program analyses to higher-order programs. The analysis needs to produce only a control-flow graph; it can derive all other information including values of variables directly from the graph. Several challenges had to be overcome, including how to build the control-flow graph on-the-fly and how to deal with non-local variables in functions. The resulting analysis is flow- and context-sensitive with a provable polynomial-time bound. The analysis is formalized and proved correct and terminating, and an initial implementation is described.
Zachary Palmer, Scott F. Smith 0001
ECOOP1
2014 Types for Flexible Objects
Zachary Palmer, Pottayil Harisanker Menon, Alexander Rozenshteyn, Scott F. Smith 0001
APLAS1
2011 Backstage Java: making a difference in metaprogramming
abstract
We propose Backstage Java (BSJ), a Java language extension which allows algorithmic, contextually-aware generation and transformation of code. BSJ explicitly and concisely represents design patterns and other encodings by employing compile-time metaprogramming: a practice in which the programmer writes instructions which are executed over the program's AST during compilation. While compile-time metaprogramming has been successfully used in functional languages such as Template Haskell, a number of language properties (scope, syntactic structure, mutation, etc.) have thus far prevented this theory from translating to the imperative world. BSJ uses the novel approach of difference-based metaprogramming to provide an imperative programming style amenable to the Java community and to enforce that metaprograms are consistent and semantically unambiguous. To make the feasibility of BSJ metaprogramming evident, we have developed a compiler implementation and numerous working code examples.
Zachary Palmer, Scott F. Smith 0001
OOPSLA1