Two days ago, there was an interesting post by Andrzej Jaworski, entitled “[Haskell] Teach theory then Haskell as example,” dated “Wed, 14 Jan 2009 04:37:33 +0100,” on the Haskell mailing list on the Haskell programming language, recommending that Haskell be taught “on most abstract terms in a framework of higher order logic, types and CT right from the start.” While I agreed with the gist of his post, I hadn’t found an appropriate publication on category theory that addressed the subject at the proper pace, level, and perspective. Most publications did not explain enough detail, assumed too many topics not covered, or did not explain the concepts in a manner which would allow me to form a visual framework of reference in my mind. In my response, I listed the following publications on category theory, a branch of mathematics which forms a theoretical framework for Haskell. (Author names and dates have been added, explicit URL’s replaced by hyperlinks in titles, and descriptions expanded, for referential convenience. In addition, I have added one additional book entry for cross-referential purposes.):

In conclusion, I stated as follows:

I would believe that having specific Haskell code to help interact with the categorical examples would help to motivate study of the abstract theory for many programmers. One problem that many people have with studying abstract theory in isolation is that they often tend to lose motivation unless they can see how the theory directly relates to and influences the semantics and data structures in the code. Having specific examples of Haskell code to tie together immediately with the abstract theory would most likely help to motivate and maintain interest.

Then I discovered a similar thread in the USENET newsgroup comp.lang.haskell which had originated two days earlier, entitled “Book recommendations on underlying theory,” dated “Sun, 11 Jan 2009 15:11:40 -0800 (PST),” in which a reader nicknamed “grimey” was asking for recommended readings on the theory behind Haskell. Grimey described himself as a programmer who had “studied physics at the undergrad level,” and whose mathematical background included “Diff & Integ. Calc, Linear Algebra, Diff Eq, Advanced (Vector) Calc, [and] Complex Analysis.” In particular, he added,

Although the Vector Calc class was particularly difficult

for me and sort of “took the wind out of my sails” and leaving me

adrift on the sea of mathematics for a long time. I always wanted to

continue on with more abstract math, like algebra and group theory, to

gain understanding of the beauty behind quantum physics; but for

various reasons, that didn’t happen. Anyway years later I still use

Linear Algebra and Diff Eq quite frequently for work, and have a good

practical engineer’s grasp of those topics. I use advanced calculus

less frequently and I use quaternions for very practical, non-

theoretical way for rotation sequences in 3D. I am an expert C/C++

programmer.

He then mentioned the following books as two that had “piqued [his] interest,” before asking for further suggestions:

Topics In Algebra

by I.N. Herstein

Xerox Corporation: 1975 Lambda-Calculus and Combinators

by J. Roger Hindley and Jonathan P. Seldin

Cambridge: Cambridge University Press, 2008

In my response linking the two threads, I mentioned Andrzej Jaworski’s response to my earlier posting in the first thread, in which he had replied in part that:

[T]here are many very good articles addressing specific issues of Haskell's theoretical foundations (e.g. http://www.cs.ut.ee/~varmo/papers/thesis.pdf). They however always assume more than they target to explain making student turn around them like a dog not knowing which ball to catch first.

I.e., the problem was that many such papers depended on parts of other papers, which either depended on other parts of the first paper, or on parts of still other papers. Then I mentioned a response to this issue that I had received in a private e-mail message from a reader of the first thread, in which that reader had written that:

… the problem “comes from trying to use academic papers as textbooks, a

purpose for which they’re not usually designed.”

I then added that this was the gist of the problem, and, as a possible solution, added a dead-tree-based book that I had read about earlier (already mentioned above):

Conceptual Mathematics: A First Introduction to Categories (Paperback)

by F. William Lawvere and Stephen Hoel Schanuel

Cambridge: Cambridge University Press, 1997

An elementary introduction

I added:

This book is reputed to be interesting even to non-mathematicians at a

philosophical level. I myself have purchased a copy.

Then, on an afterthought, in an additional post immediately afterwards, I added that what would be even better would be a mathematical storybook (separate links to the storybooks hyperlinked in the following quoted portion):

What would be especially interesting would be an introductory storybook on category theory: a book similar to, say, Flatland, by Edwin Abbott Abbott, or even Flatterland, by Ian Stewart. These books would elevate category theory out of the realm of dry equations into a story which would keep me awake with suspense reading through the night.

Yes! What we need is Category Land: Like Flatterland, Only About Categories. If only a book were so. Any suggestions?