Software! Math! Data! The blog of R. Sean Bowman
The blog of R. Sean Bowman

## Kleisli triples, Monads, and Computing

February 01 2016

We learned about monoids, we learned the (mathematician’s) definition of a Monad, and now we’re going to take a look at at least one alternative (but equivalent) definition more often used in computer science. This is the Kleisli triple.

January 04 2016

We previously looked at a generalization of the familiar algebraic concept of a monoid to a category. We’re now in a position to give the “mathematician’s definition” of a monad. People seem to have different opinions of this definition. I personally think that it’s simple, elegant, and captures the spirit of generality of category theory. I have heard that some people use this definition to belittle or confuse people. Perhaps it’s just that people feel belittled or confused by it. In any case, describing a monad isn’t easy, and we shouldn’t feel bad if we don’t understand it very well at first.

December 01 2015

I want to talk about monads. These are fairly obscure mathematical objects that have received quite a bit of attention in the programming community lately. This, I think, is mostly because of their use in Haskell to handle "side effects" and other notions of computation inside the type system. It’s grown from there, however, and now you can find monad tutorials and code using monads in languages from Javascript to C++. Today, I want to talk a little about category theory, the history of monads, and the context in which mathematicians and theoretical computer scientists see them.

## Monoids and Categories

October 03 2015

At the risk of alienating those of you who are more interested in software than abstract mathematics, I’d like to write about some basic category theory. The idea is to work my way up to defining a monad, because that seems to be a requisite exercise for any programming language blogger. Here, I’d like to talk about something a bit simpler: monoids.