"Now that you've finished SICP, time to move onto CTM" Online Book
ulb.ac.be
ulb.ac.be
I really like CTM. I'm only about halfway through it (it's big!), but IMHO the writing is quite clear without being dry or shying away from harder material. Very well written.
The main idea of the book is that no one programming paradigm is the best fit for all problems, so it's worth knowing several, their respective strengths and weaknesses, and the ways in which they can be combined. The examples are mostly written in Oz, a language of the authors' invention, but they're not dogmatic about it - it's just a multi-paradigm language well suited to showing different techniques in isolation. (I made a quick attempt to port Oz/Mozart to OpenBSD/amd64, but didn't get it working. I wrote examples in OCaml and Scheme instead.)
Also, if you appreciate reading attempts to solve problems from multiple angles, Project Euler (http://projecteuler.net/) is worth a look. You can read other peoples' solutions after solving each problem; I've learned a lot about algorithms that way. (The problems are predominantly mathematical.)
It's been awhile since I did any heavy lifting in mozart-oz but I keep it in my reference stack together with lisp, smalltalk.
I prefer to work in languages that are reasonably portable across Linux, BSD (inc. OS X), and Windows. Combined with my other priorities and general taste, this means Lua, various Scheme implementations, OCaml, and C. (Your taste and priorities probably differ, though. Peace.)
* Which is an interesting portability test - Linux-isms are invalid, stuff that isn't 64-bit clean won't work, it's not quite i386, and OpenBSD's randomizing malloc tends to expose interesting bugs as well. (The only real loss has been Haskell, but I'm uneasy with how Haskell's de-facto standard seems to be "whatever the newest GHC does" when GHC has bootstrap/portability issues, e.g. http://hackage.haskell.org/trac/ghc/ticket/1346 .)
While I have your attention, do you have any other interesting links/references for it? Outside of CTM and its companion wiki, I've seen it mentioned on the c2 wiki (http://c2.com/cgi/wiki?OzLanguage http://c2.com/cgi/wiki?MozartProgrammingSystem http://c2.com/cgi/wiki?MultiParadigmProgrammingLanguage , etc.), but I haven't run across it otherwise. That might just be the places & niches I frequent, though.
It looks like there's a FreeBSD port of Mozart, FWIW (http://www.freebsd.org/cgi/ports.cgi?query=mozart&stype=...), though !i386 is flagged as broken.
Christian Schulte,http://web.it.kth.se/~cschulte/papers.html, wrote a book or collection of papers "Programming Constraint Services" that really what I can recall was using mozart-oz.
As you can see I only reference mozart-oz in the context of CP-AI-OR but 2000-2004 I used it more or less weekly to do all kind of "normal" programming (whatever that is;)).
This will give some more odd results http://www.google.se/search?q=round+robin+scheduling+mozart
http://www.amazon.com/Concepts-Techniques-Models-Computer-Pr...
(There are, in fact, other deep computer science books that aren't related to SICP. :) )
If you haven't read CTP yet, buy it now and make it your downtime reading.
RWH is just a good Haskell book teaching people how to do practical things with the language, but it doesn't have the intention of reaching the level of conceptualism and abstraction that the books I've mentioned achieve.
In fact, I think that RWH is not a good book for learning Haskell unless you're a Java programmer. It's mainly written for that audience. In case you come from Lisp or even Ruby or Python I'd strongly recommend A Gentle Introduction to Haskell (http://www.haskell.org/tutorial/).
It's been the officious Haskell tutorial since 1998. It's short, free and written by very relevant members of the Haskell community.
Lazy functional programming is just one of these models (higher order functions + laziness). CTM shows that other models can be beautiful and powerful too.