Programming with monads can be advantageous even in imperative languages with builtin support for side effects. However, in these languages composing monadic programs is different from composing side-effecting imperative programs. This does not need to be the case, as already noticed by Filinski [1994]. We revive the well-known technique of monadic reflection in the context of modern programming languages with support for fibers, generators, or coroutines. In particular, we show how (layered) monadic reflection can be implemented in a stack safe manner and how effect safety can conveniently be approximated by capability passing.
Sun 22 AugDisplayed time zone: Seoul change
Sun 22 Aug
Displayed time zone: Seoul change
16:00 - 17:30 | |||
16:00 30mTalk | Representing Monads with Capabilities HOPE | ||
16:30 30mTalk | Higher-order Programming with Effects and Handlers — with First-Class Functions HOPE Jonathan Immanuel Brachthäuser EPFL, Philipp Schuster University of Tübingen, Edward Lee University of Waterloo, Aleksander Boruch-Gruszecki EPFL | ||
17:00 30mTalk | Computational and Contextual Program Differences: Reasoning About Non-equivalent Effectful Programs in an Higher-Order Scenario HOPE Ugo Dal Lago University of Bologna, Italy / Inria, France, Francesco Gavazzo University of Bologna & INRIA Sophia Antipolis |