views:

187

answers:

3

Hi,

Knowing the argot of a field helps me a lot, especially since it allows me to converse intelligently with those who know a lot more than I, so I would like to find a good lexicon of Functional Programming terms.

E.g., I repeatedly encounter these: Functor, Arrow, Category, Kleisli, Monad, Monoid, a veritable zoo of Morphisms, etc. I also notice many of these appear with prefixes such as "covariant", "co-", "endo-" etc.

Of these, I can say I actually understand Monoid and Covariant and sort of get Monad, but the rest are still gibberish to me. (Note that I don't mean this list as exhaustive and I'm not looking to have these defined or described for me here, I'm looking for learning resources.)

Can someone point me towards an FP lexicon? It need not be on-line, as long as it's possible to find it (and it's not a rare volume for which I'd have to pay many tens of dollars).

+4  A: 

Many of the terms you used as example are from Category Theory, and the best resource I know in the circumstances is Benjamin Pierce's "Basic Category Theory for Computer Scientists"

Pascal Cuoq
It's not even that expensive: $21 in the US. http://www.amazon.com/exec/obidos/ASIN/0262660717?redirect=true
Pascal Cuoq
@Pascal A colleague suggested that this text does not align so well with current FP usage. He pointed out that it doesn't deal with Monads at all, probably the greatest single obsession of the FP world (or so it seems). And the plethora of morphisms I hear of don't appear, either. In short, it seems to be category theory primer for programmers more than an compendium of FP techniques.
Randall Schulz
+3  A: 
Norman Ramsey
"... a handful of elite functional programmers seem to use category theory to get insights into functional programming ..." I guess I've fallen in with a bad crowd...
Randall Schulz
@Randall: No, you're a lucky man. I wish I could do it. I'm going to try again this summer...
Norman Ramsey
Norman, you have no idea how much better you've made me feel about all the mind-bending Haskell papers I've read over the last few months. I recently heard someone joke that understanding Haskell requires *two* PhDs. If you're struggling, there's hope for the rest of us...
rtperson
+5  A: 

As other answers have pointed out, to really understand those terms you have to study Category Theory. However, Category Theory is very abstract and may not help you build up intuition immediately. To see the abstract concepts in action, I highly recommend the Typeclassopedia (PDF) (blog announcement).

Wei Hu
Typeclassopedia looks great, thanks!
Randall Schulz
I second the recommendation.
Seth Tisue