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?

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.

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

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 being...is that so hard??
–
Pete L. ClarkFeb 13 '11 at 9:44

2

@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?
–
beroalFeb 19 '11 at 5:42

1

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 PiponiFeb 15 '12 at 16:32