Combining computational effects

While some researchers seek to generalize monads (to arrows), others try to narrow the focus to achieve a richer theory (and probably deeper understanding).

Combining computational effects: commutativity and sum

We begin to develop a unified account of modularity for computational effects. We use the notion of enriched Lawvere theory, together with its relationship with strong monads, to reformulate Moggi's paradigm for modelling computational effects; we emphasise the importance here of the operations that induce computational effects. Effects qua theories are then combined by appropriate bifunctors (on the category of theories). We give a theory of the commutative combination of effects, which in particular yields Moggi's side-effects monad transformer (an application is the combination of side-effects with nondeterminism). And we give a theory for the sum of computational effects, which in particular yields Moggi's exceptions monad transformer (an application is the combination of exceptions with other effects).
A longer version: Combining Effects: Sum and Tensor

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Notions of Computation Determine Monads

See also Notions of Computation Determine Monads

The perspective of this paper is that computational effects determine monads
but are not identified with monads. We regard a computational effect as being realised by families of operations, with a monad being generated by their
equational theory.

Monads Transformers?

Isn't this directly applicable to the design and understanding of monad transformers in Haskell?

I think commutativity calculations would show which monad transformers can be stacked without worrying about changed semantics.

Link broken

The papers above, and other related papers, can be obtained from Plotkin's publications page.