Skip to main content

Monads for behaviour

Maciej Piróg and Jeremy Gibbons

Abstract

The monads used to model effectful computations traditionally concentrate on the "destination" - the final results of the program. However, sometimes we are also interested in the "journey" - the intermediate course of a computation - especially when reasoning about non-terminating interactive systems. In this article we claim that a necessary property of a monad for it to be able to describe the behaviour of a program is complete iterativity. We show how an ordinary monad can be modified to disclose more about its internal computational behaviour, by applying an associated transformer to a completely iterative monad. To illustrate this, we introduce two new constructions: a coinductive cousin of Cenciarelli and Moggi's generalised resumption transformer, and States - a State-like monad that accumulates the intermediate states.

ISSN
1571−0661
Journal
Electronic Notes in Theoretical Computer Science
Note
Proceedings of the Twenty−ninth Conference on the Mathematical Foundations of Programming Semantics‚ MFPS XXIX
Pages
309 − 324
Volume
298
Year
2013