Lars Henrik Mathiesen
13 Mar 2001 00:12:02 -0000

> Date: Mon, 12 Mar 2001 17:16:29 +0100
> From: Frank Atanassow <>

> Lars Henrik Mathiesen wrote (on 10-03-01 20:35 -0000):
> > However, in some expositions of category theory, the usefulness of
> > monads is justified because they 'belong' to a certain adjunction.
> You can regard a monad as arising from a particular adjunction but,
> although every adjunction determines a unique monad, the converse is
> not true. In fact, the collection of resolutions for a monad forms a
> category with adjunctions as objects and certain functors as arrows.
> The adjunction which gives rise to the Kleisli category is initial
> in this category. The terminal object is called the Eilenberg-Moore
> category and it has as objects M-algebras, like your `xi', and as
> arrows M-algebra homomorphisms.

Yes, I was aware of that --- I should perhaps have said that there's
typically a 'motivating' adjunction, often one involving a forgetful
functor. Which is generally different from the one into the Kleisli

I read the rest of your post with great interest too, though I need to
work at it a bit before I think I understand all of it. MacLane is off
the shelf, and section IV.7 is scheduled to be worked though come the

My own thoughts were a bit less ambitious, and I found out that
Haskell (at least hugs -98 +o) will in fact do what I had in mind:

> module Algebra () where

> class Monad m => Algebra m a where xi :: m a -> a

> instance (Num a) => Algebra [] a where
>  xi = foldl (+) 0

> instance Algebra [] [a] where xi = concat

> unit :: Algebra [] a => a
> unit = xi []

> (#) :: Algebra [] a => a -> a -> a
> x # y = xi [x, y]

   Prelude> :load Algebra.lhs
   Reading file "Algebra.lhs":

   Hugs session for:
   Algebra> unit :: Int
   Algebra> unit :: Float
   Algebra> unit :: [Char]
   Algebra> "foo" # "bar"
   Algebra> (1::Int) # 2 # 3

But perhaps I'm just easily amused.

Lars Mathiesen (U of Copenhagen CS Dep) <> (Humour NOT marked)