The Algebra of Data and the Calculus of Mutation
blog.lab49.com
blog.lab49.com
The links to the papers by Conor McBride are broken, but you can find them here: http://strictlypositive.org/publications.html
I usually relate it to sets. Types are sets of possible objects, "+" indicates set-based union, and "*" is just the Cartesian product of the types.
Each is a (blurry) picture of algebraic ring structure.
The notion of one-hole context, its connection to differentiation, and its application to zippers is really interesting stuff. Another (much more detailed) discussion of it can be found here: http://en.wikibooks.org/wiki/Haskell/Zippers
The notion is so contrary to the way I'm used to thinking about programming and yet so appropriate given that mutation is change and a derivative describes the rate of change.
I want some more!
[0]: https://secure.wikimedia.org/wikipedia/en/wiki/Catamorphism
[1]: https://secure.wikimedia.org/wikipedia/en/wiki/Fold_%28highe...