February 2017

To appear in ICFP 2017.

Abstract

It is well-known that the simply typed lambda-calculus is modeled by any cartesian closed category (CCC). This correspondence suggests giving typed functional programs a variety of interpretations, each corresponding to a different category. A convenient way to realize this idea is as a collection of meaning-preserving transformations added to an existing compiler, such as GHC for Haskell. This paper describes such an implementation and demonstrates its use for a variety of interpretations including hardware circuits, automatic differentiation, incremental computation, and interval analysis. Each such interpretation is a category easily defined in Haskell (outside of the compiler). The general technique appears to provide a compelling alternative to deeply embedded domain-specific languages.

BibTeX

@Article{Elliott-2017-compiling-to-categories,
  author    = {Conal Elliott},
  title     = {Compiling to categories},
  journal   = {Proc. ACM Program. Lang.},
  volume    = {1},
  number    = {ICFP},
  articleno = {48},
  numpages  = {24},
  month     = sep,
  year      = {2017},
  url       = {http://conal.net/papers/compiling-to-categories}
  doi       = {http://dx.doi.org/10.1145/3110271}
}