@article{graphcalc,
  author = {Bahr, Patrick and Hutton, Graham},
  title = {Beyond Trees: Calculating Graph-Based Compilers (Functional Pearl)},
  year = {2024},
  issue_date = {August 2024},
  publisher = {Association for Computing Machinery},
  address = {New York, NY, USA},
  volume = {8},
  number = {ICFP},
  url = {https://doi.org/10.1145/3674638},
  doi = {10.1145/3674638},
  abstract = {Bahr and Hutton recently developed an approach to compiler calculation that
allows a wide range of compilers to be derived from specifications of their
correctness.  However, a limitation of the approach is that it results in
compilers that produce tree-structured code.  By contrast, realistic compilers
produce code that is essentially graph-structured, where the edges in the graph
represent jumps that transfer the flow of control to other locations in the
code.  In this article, we show how their approach can naturally be
adapted to calculate compilers that produce graph-structured code, without
changing the underlying calculational methodology, by using a higher-order
abstract syntax representation of graphs.},
  journal = {Proceedings of the ACM on Programming Languages},
  month = aug,
  Date = {2024-08-15},
  articleno = {249},
  numpages = {25},
  keywords = {graphs, higher-order abstract syntax, program calculation}
}