Functors, Monads and Programming


We maintain a list of registered participants for this course so that we can get in touch with all the interested people.

The participants meet for Category Theory on Fridays 9:30-11:00 in Room 217. The participants meet for Haskell on Mondays 9:30-11:00 in Room 217 (or in Room 123 if there is no projector in Room 217).

The initial announcement has been moved to a separate page.


Some basic texts on Category theory are:

  1. Categories for the working mathematician by S. Maclane
  2. Sheaves, Geometry, Logic by Maclane and Moerdjk
  3. Topos theory by P. Johnstone
  4. Toposes, Triples and Theories by Michael Barr and Charles Wells.

Some basic texts for Haskell are:

  1. Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen

  2. Where do I begin? A problem solving approach to teaching functional programming by Simon Thompson

  3. Haskell Tutorial for C Programmers

  4. Other books and tutorials listed on the Haskell web site


Participants are encouraged to add notes as "subpages" (start the name with a forward slash (/)) of this page:

  1. Interpret Haskell.

  2. Introduction to Category Theory.

  3. Diagonal Listing of Pairs.

  4. An implementation of Graham's Scan.

  5. A discussion of Laziness and Purity.

  6. A faster way of listing primes.

  7. Primes using Queues.

  8. Functors and Natural Transformations.

  9. Arrow Theoretic Definitions.

  10. Adjoints and Monads.

  11. Some Monads.

  12. Programming Semantics for Category Theory.

  13. Imperative Style in Haskell.


We list some possible projects to work on in Haskell.

  1. Create a package that implements symbolic manipulation for polynomials in one or more variables.
  2. Take an existing project (such as "elvis" or "par" :-) ) and re-write it in Haskell.

  3. Vivek Dadu implemented the quadratic sieve factoring method in C/C++. Convert his work to Haskell/Clean and implement concurrency.

CategoryHaskell CategoryMathematics

IMScWiki: Haskell_Course (last edited 2010-04-01 21:34:55 by localhost)