Date: Mon, 12 Mar 2001 17:16:29 +0100 From: Frank Atanassow <franka@cs.uu.nl>
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 category. 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 weekend. 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: /usr/local/share/hugs/lib/Prelude.hs Algebra.lhs Algebra> unit :: Int 0 Algebra> unit :: Float 0.0 Algebra> unit :: [Char] "" Algebra> "foo" # "bar" "foobar" Algebra> (1::Int) # 2 # 3 6 But perhaps I'm just easily amused. Lars Mathiesen (U of Copenhagen CS Dep) <thorinn@diku.dk> (Humour NOT marked)