MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Comprehending Monads (1992) [385 citations — 12 self]

Abstract:

Category theorists invented monads in the 1960's to concisely express certain aspects of universal algebra. Functional programmers invented list comprehensions in the 1970's to concisely express certain programs involving lists. This paper shows how list comprehensions may be generalised to an arbitrary monad, and how the resulting programming feature can concisely express 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.

Citations

1415 The Definition of Standard ML – Milner, Tofte, et al. - 1990
1122 Introduction to Functional Programming – Bird, Wadler - 1988
522 Categories for the working mathematician – Lane - 1998
479 The Implementation of Functional Programming Languages – Jones - 1987
345 Computational lambda-calculus and monads – Moggi - 1989
334 Category theory for computing science – Barr, Wells - 1990
325 Introduction to Higher Order Categorical Logic – Lambek, Scott - 1986
278 Types, abstraction and parametric polymorphism – Reynolds - 1983
244 Why functional programming matters – Hughes - 1989
225 Call-by-name, call-by-value, and the -calculus – Plotkin - 1975
224 Theorems for free – Wadler - 1989
195 An introduction to the theory of lists – Bird - 1987
138 Call-by-name, call-by-value, and the λ-calculus – Plotkin - 1975
131 Miranda: A non-strict functional language with polymorphic types – TURNER - 1985
102 Linear types can change the world – Wadler - 1990
101 Continuation-passing, closure-passing style – Appel, Jim - 1989
89 Algorithmics -- towards programming as a mathematical activity – Meertens - 1987
80 Is there a use for linear logic – Wadler - 1991
77 to replace failure by a list of successes – Wadler - 1985
68 Single-threaded polymorphic lambda calculus – Guzm'an, Hudak - 1990
63 editors). Report on the Programming Language Haskell, A Non-strict Purely Functional Language (Version 1.2 – Hudak, Jones, et al. - 1992
54 Integrating functional and imperative programming – Gifford, Lucassen - 1986
54 Detecting global variables in denotational specifications – Schmidt - 1985
39 On the relation between direct and continuation semantics – Reynolds - 1974
38 A functional theory of exceptions – Spivey - 1990
33 The Definition of Standard ML Version 2 – Harper, Milner, et al. - 1988
32 Recursion Equations as a Programming Language – Turner - 1982
31 Expressing and reasoning about non-deterministic functional programs – HUGHES, O’DONNELL - 1989
29 Update analysis and the efficient implementation of functional aggregates – Bloss - 1989
21 Constructing natural language interpreters in a lazy functional language – Frost, Launchbury - 1989
21 A semantic model of reference counting and its abstraction (detailed summary – Hudak - 1986
17 A categorical approach to the theory of lists – Spivey - 1989
8 Higher order functions considered unnecessary for higher order programming – Goguen - 1988
5 editors). Report on the functional programming language Haskell – Hudak, Wadler - 1988
4 non-determinism, side-effects, and parallelism: a functional perspective – Hudak, Arrays - 1986
3 Form follows function – Fairbairn - 1987
3 A simple and efficient way to handle large data structures in applicative languges – Holmstrom - 1983
3 An abstract view of programming languges. Course notes – Moggi
2 Axiomatising operational equivalence in the presence of side effects – Mason, Talcott - 1989