Conference Papers: 'do' Unchained: Embracing Local Imperativity in a Purely Functional Language (Functional Pearl)

[ullrich22do]Sebastian Ullrich, Leonardo de Moura, 'do' Unchained: Embracing Local Imperativity in a Purely Functional Language (Functional Pearl), Association for Computing Machinery, New York, NY, USA, August 2022.


Purely functional programming languages pride themselves with reifying effects that are implicit in imperative languages into reusable and composable abstractions such as monads. This reification allows for more exact control over effects as well as the introduction of new or derived effects. However, despite libraries of more and more powerful abstractions over effectful operations being developed, syntactically the common 'do' notation still lags behind equivalent imperative code it is supposed to mimic regarding verbosity and code duplication. In this paper, we explore extending 'do' notation with other imperative language features that can be added to simplify monadic code: local mutation, early return, and iteration. We present formal translation rules that compile these features back down to purely functional code, show that the generated code can still be reasoned over using an implementation of the translation in the Lean 4 theorem prover, and formally prove the correctness of the translation rules relative to a simple static and dynamic semantics in Lean.


  [PDF]   [DOI]


Authors at the institute

Scientific Staff
Sebastian Ullrich