So I am currently studying the language of "serious" language researchers in order to write a paper about Cat, and the book "Types and Programming Languages" by Benjamin Pierce has turned out to be a huge boon!
A while back I criticized Benjamin Pierce's book Types and Programming Languages for not defining what a type was. While it may be argued that it is an oversight, I think the assumption is that the reader has a very minimum of category theory (of which I previously had none). I still feel a the book could have made a bit more effort to present the very core concepts, which I am sure I am not alone in lacking, my overall opinion of the book is very favourable! Pierce is an undeniable grand-master of type theory and I feel I must extoll its virtues of the book as penance for my earlier critique.
The key to getting the most out of the book is to spend the neccessary effort to become acquainted with the syntax and the techniques of explanation. After having spent some time with the book I now feel I have a pretty good grasp of the basics of sum types algebraic data types, as well as interesection types, existential polymorphism, universal polymorphism, and some other concepts. I had previously found it difficult to find clear and precise explanations of these concepts elsewhere online.
I want to concluded by saying that this is an excellent reference book and introduction to the world of type theory. It would surely come in useful to any budding language designers who want to be able to hold their own in a sophisticated discussion forum like http://lambda-the-ultimate.org/.