Good introduction is Functional Programming for the rest of us
Functional / metaprogramming seems to try and do a lot of work to make small snippets of code that generate more code. The ultimate version of Don't Repeat Yourself. However, there are other deficiencies of programming that seem more important right now. It feels like it's making Bret Victor's Microwave problem even worse! Or, like, why can't a machine take care of the opening and closing of HTML tags for you?
Functional programming languages are really helpful when you're faced with writing a lot of code and you want to “write code that writes code for you”.
Everybody recommends a combination of SICP and Paul Graham's book, ANSI Lisp and On Lisp. As well as Programming Pearls and K&R.
https://www.udacity.com/course/viewer#!/c-cs212
Doing this one first, as Norvig seems more approachable.
So far excellent class.
Still stuck on Square Roots by Newton's Method, and how averaging works out okay…
Nice summary of different programming styles at Leptonica Design Principles Paul Graham says live in the future and learn about it.