Zachary Palmer

Learn More
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(More)
We pose the question: while it is natural to embed specialized systems functionality (e.g. databases) in programming languages, how can programming language techniques simplify constructing and analyzing scalable computing systems? This topic is of increasing importance with the ongoing specialization of data and computing models in databases, systems,(More)
Scripting languages are popular in part due to their extremely flexible objects. Features such as dynamic extension, mixins, and first-class messages improve programmability and lead to concise code. But attempts to statically type these features have met with limited success. We present TinyBang, a small typed language, in which flexible object operations(More)
Patterns provide an important dimension of expressiveness to functional programming languages because they describe a concise syntax for data destruction. However, most languages treat patterns as second-class citizens: case match expressions cannot be extended, patterns cannot be selected dynamically, and patterns cannot be composed or modified by program(More)
Studies show that religious people tend to be more grateful, yet existing research tends to rely on small, non-representative samples and limited measures of religiosity. Therefore, we use a national sample (the National Study of Youth and Religion) and multiple measures of religiosity to examine the extent to which religion is associated with feelings of(More)
Traditionally, typed objects have been encoded as records; the fields and methods of an object are stored in the fields of a record and projected when needed. While the dual approach of using variants instead of records has been explored, it is more challenging to type: the output type of a variant case match must depend on the input value; this is a form(More)
We explore a novel approach to higher-order program analysis which combines lazy data propagation with ideas from optimal lambda-reduction to produce a different form of program analysis. This analysis produces only a control-flow graph; we derive all other information (e.g. values of variables) directly from this graph. The resulting analysis is flow-and(More)
This artifact is a proof-of-concept implementation of DDPA, an on-demand program analysis for higher-order functional programs. The implementation, written in OCaml, includes a parser, evaluator, and DDPA analysis for the language defined in the companion paper (including the proper record semantics extension). The analysis may be performed using different(More)
  • 1