Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Haskell is a programming language which uses some concepts from category theory like functor, monad, etc. My question is: Learning intuitive concepts about category from Haskell will ruin my intuition when I learn category theory as a mathematician or it could help developing it?

share|cite|improve this question
How could it possibly be bad? – Mariano Suárez-Alvarez Feb 11 '11 at 5:54

No, on the contrary, I think it will help your understanding.

share|cite|improve this answer

One problem is that "class Functor", "class Monad" are special cases of categorical concepts, namely the strong ones. With Haskell, you are working in the specific category. That may hinder learning category theory in full generality. Of course, this is just my POV, someone can perceive that obstacle as a no-brainer.

A concrete example. Try to define "instance Monad", i.e. a monad, on the category of rings which sends a ring R to the ring of polynomials with coefficients in R.

share|cite|improve this answer
This makes no sense! :) Anyone sane learns most categorical notions in a specific category before hearing them in the abstract, which is itself abhorrently uninteresting to most mortals except because of specific categories! – Mariano Suárez-Alvarez Feb 13 '11 at 6:42
The integers are special cases of categorical notions! – Mariano Suárez-Alvarez Feb 13 '11 at 6:44
I agree: that learning something first in a special case will inhibit your later learning of a more general case is one of the most bizarre pedagogical ideas I've ever heard...but no so bizarre that I haven't seen people on MO and this site who hold it. I mean, when thinking about pedagogy, pretend you are an actual human that so hard?? – Pete L. Clark Feb 13 '11 at 9:44
@Pete L. Clark: I do not mean “learning in a special case” is bad, rather dwelling on that special case for too long is bad. You tend to assume that propositions that are true in that special case is true in every category. I hope that OP will flinch from that destiny by not allowing Haskell to become the only “universe of discourse.” E.g. how we can learn about adjoint functors by examples in Haskell? – beroal Feb 19 '11 at 5:42
It's not quite fair to say that with Haskell you are learning about one specific category. At the core of Haskell is a lambda calculus that is precisely the internal language of cartesian closed categories. Anything you prove about Haskell programs within this core using CCC language will apply to any CCC. More generally, the applicability of what you prove about Haskell programs is a function of the generality of your argument and many proofs about Haskell programs are easy to generalise to various classes of category (eg. by writing them in point free form.) – Dan Piponi Feb 15 '12 at 16:32

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.