# Category theory

### From HaskellWiki

EndreyMark (Talk | contribs) (→Foundations: : two links how category theory concepts are present in Haskell programming) |

## Revision as of 20:32, 11 June 2006

**Category theory**can be helpful in understanding Haskell's type system. There is a "Haskell category", of which the objects are Haskell types and the morphisms from types

## Contents |

## 1 Foundations

Michael Barr and Charles Wells: Toposes, Triples and Theories. The online free available book is both an introductory and a detailed description of category theory. By the way, it is also a category theoretical descripton of the concept of *monad* (the book uses another name instead of monad: *triple*).

HaWiki's CategoryTheory is also a good theoretical introduction, and besides that, it explains how concepts of category theory are important in Haskell programming.

A Gentle Introduction to Category Theory - the calculational approach written by Maarten M Fokkinga.

## 2 Categorical programming

Catamorphisms and related concepts, categorical approach to functional programming, categorical programming. Many materials cited here refer to category theory, so as an introduction to this discipline see the #Foundations section.

- Erik Meijer, Maarten Fokkinga, Ross Paterson: Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire. See also related documents (in the CiteSeer page). Understanding the article does not require a category theory knowledge -- a self-contained material on the concept of catamorphism, anamoprhism and other related concepts.
- Varmo Vene and Tarmo Uustalu: Functional Programming with Apomorphisms / Corecursion
- Varmo Vene: Categorical Programming with Inductive and Coinductive Types. The book accompanies the deep categorical theory topic with Haskell examples.
- Tatsuya Hagino: A Categorical Programming Language
- Charity, a categorical programming language implementation.
- Deeply uncurried products, as categorists might like them article mentions a conjecture: relatedness to Combinatory logic