| | |
Summary: Monads Need Not Be Endofunctors
Thorsten Altenkirch1
, James Chapman2
, and Tarmo Uustalu2
1
School of Computer Science, University of Nottingham
2
Institute of Cybernetics, Tallinn University of Technology
txa@cs.nott.ac.uk, {james,tarmo}@cs.ioc.ee
Abstract. We introduce a generalisation of monads, called relative mon-
ads, allowing for underlying functors between different categories. Exam-
ples include finite-dimensional vector spaces, untyped and typed lambda
calculus syntax and indexed containers. We show that the Kleisli and
Eilenberg-Moore constructions carry over to relative monads and are
related to relative adjunctions. Under reasonable assumptions, relative
monads are monoids in the functor category concerned and extend to
monads, giving rise to a coreflection between monads and relative mon-
ads. Arrows are also an instance of relative monads.
1 Introduction
Monads are the most successful programming pattern arising in functional pro-
|