David Thrane Christiansen

Personal: david at davidchristiansen dot dk

IRC: christiansen on Freenode

I want programming to be a creative dialog between human and machine. To do this, I work with advanced type systems, metaprogramming, and domain-specific languages. In particular, I’ve written a fair bit of Idris, and I’m working with Dan Friedman on making dependent types more accessible through The Little Typer.

I work at Galois in Portland, Oregon, USA. Before that, I was a postdoc with Sam Tobin-Hochstadt at Indiana University in Bloomington, Indiana. I completed my Ph.D. at the IT University of Copenhagen, Denmark, in January 2016 under the supervision of Peter Sestoft. Before getting married, I was known as David Raymond Christiansen.

Upcoming Book

Dan Friedman and I wrote book on dependent types in the tradition of The Little Schemer. It will be released on September 18, 2018.

Publications

Extensible Type-Directed Editing (pdf)Joomy Korkut, David ChristiansenIn Proc. of the Workshop on Type-Driven Development (TyDe)St. Louis, Missouri, USA, September, 2018Idris’s interactive editing features are now extensible in Idris itself.

Software Development for the Working Actuary (pdf, poster)David ChristiansenIn Proc. of 4th International Symposium on End-User Development (IS-EUD ’13)Copenhagen, Denmark, June, 2013 A short paper describing ongoing research and associated poster

Projects

I’m a contributor to Idris, a functional programming language with full dependent types. In particular, I’m to blame for Idris’s take on type providers, quasiquotation, and the reflected elaborator.

I am a co-author and maintainer of the Idris IDE for Emacs, which attempts to unite the interaction styles of SLIME, agda-mode, and ProofGeneral, and to be a practical environment for writing runnable code using dependent types.

Dissertation and Thesis

I defended my Ph.D. dissertation, Practical Reflection and Metaprogramming for Dependent Types, on January 7, 2016. It describes a suite of metaprogramming features for Idris, including a means of quoting Idris’s core language using high-level Idris syntax, a way to rewrite error messages that arise from embedded languages, and a reflection of Idris’s elaborator into a monad with effects in the type checker.

My M.Sc. thesis (Danish speciale) describes Idris’s type providers, which allow dependent types to talk about values obtained from effectful computations that can observe the world in which the program finds itself being typechecked.

Miscellaneous

I’ve created some tutorials in connections with my teaching duties. In case they are useful outside of the specific courses for which they were designed, they are now online.