@InProceedings{compdata,
  Title = {Compositional data types},
  Author = {Bahr, Patrick and Hvitved, Tom},
  Booktitle = {Proceedings of the seventh ACM SIGPLAN workshop on Generic programming},
  Year = {2011},
  Address = {New York, NY, USA},
  Month = sep,
  Date = {2011-09-18},
  Pages = {83-94},
  Publisher = {ACM},
  Series = {WGP '11},
  Abstract = {Building on Wouter Swierstra's \emph{Data types \`{a} la carte}, we
  present a comprehensive Haskell library of \emph{compositional data
    types} suitable for practical applications. In this framework,
  data types and functions on them can be defined in a modular
  fashion. We extend the existing work by implementing a wide array of
  recursion schemes including monadic computations. Above all, we
  generalise recursive data types to \emph{contexts}, which allow us
  to characterise a special yet frequent kind of catamorphisms. The
  thus established notion of \emph{term homomorphisms} allows for
  flexible reuse and enables short-cut fusion style deforestation
  which yields considerable speedups. We demonstrate our framework in
  the setting of compiler construction, and moreover, we compare
  compositional data types with generic programming techniques and
  show that both are comparable in run-time performance and
  expressivity while our approach allows for stricter types. We
  substantiate this conclusion by lifting compositional data types to
  mutually recursive data types and generalised algebraic data
  types. Lastly, we compare the run-time performance of our techniques
  with traditional implementations over algebraic data types. The
  results are surprisingly good.},
  Acmauthorizer = {http://dl.acm.org/authorize?6589038},
  Acmid = {2036930},
  Doi = {10.1145/2036918.2036930},
  ISBN = {978-1-4503-0861-8},
  Keywords = {algebraic programming, deforestation, mutual recursion, reusability},
  Location = {Tokyo, Japan},
  Numpages = {12},
  Url = {http://doi.acm.org/10.1145/2036918.2036930}
}