Studying Programming Language Theory

I have recently become extremely interested in understanding and proving aspects of (functional) programming languages.

However as I dive deeper in, things like $\lambda$ calculus, category theory, and denotational semantics are a little difficult to grok without proper explanation.

I read SICP (quite an enlightening book) but I'm looking to dive deeper into the theory of functional programming. Are there any books/blogs/sites/you-name-it that would discuss the theory of functional programming languages from the ground up?

-

It is not easy to come by books that consider the denotational semantics of $\lambda$-calculus. One possibility is:

1. Roberto M. Amadio and Pierre-Louis Curien: Domains and Lambda-Calculi

Type-theoretic accounts are easier to get hold of:

1. Bob Harper, Practical Foundations of Programming Languages (there is also a printed version).
2. Benjamin Pierce, Types and Programming Languages.
3. Frank Pfenning's course on Computation and Deduction, I think he also published a book with the same title.
-
I went with Domains and Lambda-Calculi as well as Design Concepts in Programming Languages (thick but worth it so far) –  jozefg Dec 24 '12 at 20:33

These books have high ratings and come up on different scientific communities:

Type Theory and Functional Programming by Simon Thompson.

Structure and Interpretation of Computer Programs

-
How do these books address theory? Why do you recommend them; have you read them? –  Raphael Feb 17 '13 at 9:52