Monadic Compiler Calculation (Functional Pearl)

Patrick Bahr, Graham Hutton

Research output: Conference Article in Proceeding or Book/Report chapterArticle in proceedingsResearchpeer-review


Bahr and Hutton recently developed a new approach to calculating correct compilers directly from specifications of their correctness. However, the methodology only considers converging behaviour of the source language, which means that the compiler could potentially produce arbitrary, erroneous code for source programs that diverge. In this article, we show how the methodology can naturally be extended to support the calculation of compilers that address both convergent and divergent behaviour simultaneously, without the need for separate reasoning for each aspect. Our approach is based on the use of the partiality monad to make divergence explicit, together with the use of strong bisimilarity to support equational-style calculations, but also generalises to other forms of effect by changing the underlying monad.
Original languageEnglish
Title of host publication Proceedings of the ACM on Programming Languages
PublisherAssociation for Computing Machinery
Publication dateAug 2022
Publication statusPublished - Aug 2022


  • program calculation
  • verified compiler
  • virtual machine
  • Agda
  • bisimulation
  • monad


Dive into the research topics of 'Monadic Compiler Calculation (Functional Pearl)'. Together they form a unique fingerprint.

Cite this