Frank Atanassow
Fri, 9 Mar 2001 21:33:09 +0100

> On Fri, 9 Mar 2001, Frank Atanassow wrote:
> > A monad on category C is a monoid in the category of endofunctors on C.

Surprisingly, my facetious little remark about monads elicited the following
response (whose author I will not disclose, as I haven't obtained
permission yet):

Somebody wrote (on 09-03-01 15:38 +0000):
> Hi Frank --- Believe it or not your one-liner actually *is* helpful to me.
> >From dim & distant algebra days I remember the definition of monoid (set,
> binary operation, associative, left & right unit) but being a Physics
> major/Maths minor, a long time ago, I was deprived of any introduction to
> Category Theory. I've read some of the papers Haskell monads section &
> also had a look at some category theory books --- but I can't remember
> seeing your nice one-line definition --- do you have a reference to the
> paper or book(s) that do it this way? 

I think the monoidal characterization is well known. I first saw it in Asperti
& Longo [1] (p.75), but I'm sure it can be found in other texts. The
connection with monoids is not very evident in Haskell, but is worth keeping
in mind if you know a bit of category theory.

BTW, part of the reason I'm posting this to the Haskell list is to plug a
little project I have started on my home page. It's a small collection of useful
reference texts which deal with programming languages and semantics, all of
which have become available on the web. [1] is among these.

<start violins for impassioned plea>

I occasionally see posts on this list from people who are not researchers or
educators (and consequently do not have ready access to such published
material) expressing some interest in exploring PL theory and other, related
formal topics further, if only the ``barrier-to-entry'' were not so
high. Indeed, there is a wealth of technical articles which are available
online, and could prove useful or at least interesting to many Haskell and ML
programmers, but even the ones directed at a relatively wide audience of PL
researchers can be hard to grasp for non-researchers. Personally, I think this
is one reason that Haskell and ML are still fairly marginalized languages. My
hope is that this list can grow into a useful resource for go-getters and
self-starters from other fields and communities, as well as the average PL

<end violins for impassioned plea>

OK, I am only a stupid PhD student with no publications under my belt, but
anyhow that is how I felt before I became a researcher. Over the space of a
few years, while I was still hacking C++ in the dungeons of our vast corporate
megacomplex, I laid out several hundred dollars of my own money to buy enough
texts to jumpstart my own education, and what started with one book soon
exploded into a mini-library of hardbacks and articles (because you know the
dependencies in any non-trivial bibliography resemble a large bowl of sticky
spaghetti), and I would have been deliriously happy to learn that, for
example, Barendregt's encyclopaedic book on lambda-calculus was actually
readable from the web. So here's to you, my comrades-in-arms.

As it states on my page, if any of you know of any other relevant texts
which might be added to the list, please contact me and I will augment the
list forthwith.

The list is available at:

and here is the reference I promised:

  [1] Andrea Asperti and Giussepe Longo. Categories, Types and Structures. An
      introduction to Category Theory for the working computer
      scientist. MIT Press, 1991.

Frank Atanassow, Information & Computing Sciences, Utrecht University
Padualaan 14, PO Box 80.089, 3508 TB Utrecht, Netherlands
Tel +31 (030) 253-3261 Fax +31 (030) 251-379