Aaron Turon

PhD student
College of Computer and Information Science
Northeastern University

turon at ccs dot neu dot edu

Research advisor: Mitch Wand

Research interests: programming language semantics and design, concurrency, process algebra, verification, type theory.

Curriculum vitae

PL Seminar, Jr.

I am the current organizer for PL Seminar, Jr., a weekly programming languages seminar for PhD students. Presentations are usually surveys of established work, rather than talks about current research, as the latter is the focus of Mitch Wand's PL Seminar. The two seminars address distinct needs, and students are encouraged to attend both.

Publications

Scott Owens, John Reppy, and Aaron Turon. Regular expression derivatives reexamined. Accepted for JFP, pending revisions.

Aaron Turon. Metaprogramming with Traits. (honors thesis)
[ pdf ]

John Reppy and Aaron Turon. Metaprogramming with Traits. In European Conference on Object-Oriented Programming, July 2007.
[ pdf ]

John Reppy and Aaron Turon. A foundation for trait-based metaprogramming. In online proceedings for FOOL/WOOD '06, January 2006.
[ pdf | slides | tech report ]

Drafts

Aaron Turon. Burke-Fisher error repair in a recursive-descent parser.

Other documents

SML/NJ Language Processing Tools: User Guide.
[ pdf ]

ML-Flex implementation notes (somewhat outdated).
[ pdf ]

Projects

Termination analysis
I'm investigating a variety of extensions to Manolios and Vroon's termination analysis, which is based on "calling context graphs". These extensions include higher-order variants, abstraction/refinement techniques, counterexample generation, and more sophisticated induction scheme generation. This work is supervised by Pete Manolios.

The join calculus
The join calculus is a process calculus for distributed programming, inspired by both the pi-calculus and Berry and Boudol's Chemical Abstract Machine. With Mitch Wand, I am working toward a study of type systems and other static analyses for the join calculus.

Traits
Traits are a simple mechanism for structuring classes within a single-inheritance language; essentially, a trait is just a collection of fields and methods that can be incorporated into many classes, even when only single-inheritance is allowed. Thus, traits are very similar to mixins. The main distinction is composition: mixins are composed by successive inheritance, which forces a linear order on the mixins to be composed. In contrast, traits are composed in a symmetric fashion, and conflicts are not allowed. To make this practical, langauges generally allow aliasing and exclusion of trait members during composition.

In many domains, it is common for classes to have highly regular internal structure. A simple example is the use of "setters" and "getters" for private instance variables. A more compelling example is the use of "business objects" to represent pertinent business entities and to persist information about those entities to a database. Such objects often contain boilerplate code for mapping database fields to class members, and this code must be repeated per-field, per-class. My research on traits has focused on their use as a means of specifying repetitive structure within a single class. Traits are well-suited for this task, once they are outfitted with an appropriate mechanism for abstraction.

My honors thesis (and companion paper), Metaprogramming with Traits, explores these ideas in depth, and presents a typed calculus of abstractable traits. I show that, with a modest set of operations, traits can be used to cleanly capture a wide variety of previously unabstractable code.

SML/NJ
With John Reppy, I have rewritten the lexical analyzer generator ML-Lex. The new implementation is based on Brzozowski's regular expression derivatives (see this page for a short introduction). Notable new features include Unicode support and a more complete set of operations on regular expressions (e.g., complement and intersection).

Using Terence Parr's linear-approximate lookahead, LL(k) parsing is practical even when k>1. We have designed and implemented an LL(k) parser generator for SML/NJ. The new tool is similar in spirit to Parr's ANTLR. There are numerous advantages to LL(k) parsers: because they are predictive, information can flow down as well as up the grammar as the parse takes place. The LL(k) repstriction is easier to understand than the LALR(1) restriction, a boon for grammar-writing. We can go beyond LL(k) by introducting selective backtracking and semantic predicates. Additional features of note include grammar inheritence for language extension, support for EBNF-style specifications and robust, automatic error repair.

Moby
John Reppy and Kathleen Fisher developed Moby as an experiment in adding classes, objects, and concurrency to an SML-like language. I have been involved in the implementation of separate compilation for Moby, and hope in the future to add traits to the language.

Music

Probably my favorite hobby, when I have the time for it--rarely, these days--is writing music.

A few songs:
Justcraft

Class-related

Notes for advanced type systems

Links

Lambda the ultimate

Last updated: May 2, 2008