Modular Monad Transformers



During the last two decades, monads have become an indispensable tool for structuring functional programs with computational effects. In this setting, the mathematical notion of a monad is extended with operations that allow programmers to manipulate these effects. When several effects are involved, monad transformers can be used to build up the required monad one effect at a time. Although this seems to be modularity nirvana, there is a catch: in addition to the construction of a monad, the effect-manipulating operations need to be lifted to the resulting monad. The traditional approach for lifting operations is non-modular and ad-hoc. We solve this problem with a principled technique for lifting operations that makes monad transformers truly modular.


	Author = {Mauro Jaskelioff},
	Booktitle = {European Symposium on Programming},
	Crossref = {esop2009},
	Pages = {64-79},
	Title = {Modular Monad Transformers},
	Year = {2009}}

	Editor = {Giuseppe Castagna},
	Publisher = {Springer},
	Title = {Programming Languages and Systems, 
	         18th European Symposium on Programming, ESOP 2009},
	Volume = {5502},
	Year = {2009}}