Conal Elliott has been working (and playing) in functional programming since 1980. He especially enjoys applying semantic elegance and rigor to library design and optimized implementation. He invented the paradigm now known as “functional reactive programming” in the early 1990s, and then pioneered compilation techniques for high-performance, high-level embedded domain-specific languages, with applications including 2D and 3D computer graphics. The latter work included the first compilation of Haskell programs to GPU code, while maintaining precise and simple denotation and powerful composability, as well as a high degree of optimization. Conal earned a BA in math with honors from the College of Creative Studies at UC Santa Barbara in 1982 and a PhD in Computer Science from Carnegie Mellon University in 1990. He previously worked as software architect at Sun Microsystems, graphics researcher at Microsoft Research, principal engineer at Tabula Inc (on chip specification and compiling Haskell to hardware for massively parallel execution), and (most recently) distinguished data/AI scientist at Target. Conal currently studies jazz piano in the woods in northern California and is open to well-suited employment and collaboration opportunities. For publications, CV, professional blog, etc, see http://conal.net.
This talk revisits the classic exercise of compiling a programming language to a stack-based virtual machine. We will start with a precise and absurdly simple model of stack computation, extract a uniform collection of simple equations in a standard way, and solve those equations to yield a small compiler implemented in Haskell. Moreover, Haskell is also the source language being compiled, thanks to a standard (and already implemented) translation of functional programs to algebraic form. In contrast with previous stack-based compiler calculation work I know of, the new specification is simpler, statically fail-safe, and applicable to richly typed languages, while the calculation is easier and more inevitable.