a1 Department of Computing Science, University of Glasgow, G12 8QQ, Scotland.[email protected]
Category theorists invented monads in the 1960's to express concisely certain aspects of universal algebra. Functional programmers invented list comprehensions in the 1970's to express concisely certain programs involving lists. This paper shows how list comprehensions may be generalised to an arbitrary monad, and how the resulting programming feature can express concisely in a pure functional language some programs that manipulate state, handle exceptions, parse text, or invoke continuations. A new solution to the old problem of destructive array update is also presented. No knowledge of category theory is assumed.
(Received January 02 1991)
(Revised June 02 1992)
† An earlier version of this paper appeared in ACM Conference on Lisp and Functional Programming, Nice, June 1990.