Hi HN,<p>I see almost constant references to Lisp and how expressive it is here in the community. As a software engineer, I expect that learning Lisp thoroughly, starting from fundamental principles, all the way through advanced concepts, will improve my technical skills and apply to many problems. Since the community seems to be so enamored with Lisp, I thought this would be the best place to ask:<p>What are the best resources for learning Lisp? Particularly, basic principles, advanced concepts, and maybe a bit of historical context as well.<p>Books, online or otherwise, or any blogs or articles, YouTube lectures or talks -- anything that really concisely and clearly explains things.
Structure and Interpretation of Computer Programs (aka SICP), available here <a href="https://mitpress.mit.edu/sicp/full-text/book/book.html" rel="nofollow">https://mitpress.mit.edu/sicp/full-text/book/book.html</a><p>Uses Scheme (which is a dialect of Lisp) as its teaching language. This book was used at MIT for their introductory programming course. It provides a fairly deep dive into the fundamentals of functional programming.
Some guy named Paul Graham wrote a book called "On Lisp".<p><a href="http://www.paulgraham.com/onlisp.html" rel="nofollow">http://www.paulgraham.com/onlisp.html</a><p>It's a good introduction to the Lisp way of programming using Common Lisp.
I'd recommend <a href="http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equations-of-software/" rel="nofollow">http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equat...</a> .<p>A couple of "lower level" explanations - <a href="http://stevelosh.com/blog/2013/03/list-out-of-lambda/" rel="nofollow">http://stevelosh.com/blog/2013/03/list-out-of-lambda/</a> (a somewhat easier start) and <a href="http://codon.com/programming-with-nothing" rel="nofollow">http://codon.com/programming-with-nothing</a> - show where part of the power comes from.
Emacs...<p>Largely written in Lisp and is a great resource. Also has SLIME which is a fantastic way to develop with Common Lisp.<p>Clojure support in Emacs (via Cider) is also great.<p>Emacs is often the first exposure that many get with Lisp (other than SICP).<p>In terms of nice Lisps to work with I think Clojure is more active as a community than any other dialect, and so it's useful for contemporary projects and generally getting help and support and so on.
This article is good to get an idea what lisp is all about.<p><a href="http://www.defmacro.org/ramblings/lisp.html" rel="nofollow">http://www.defmacro.org/ramblings/lisp.html</a><p>It compares lisp to XML. In that you are programming in a tree. Other languages must be parsed into a tree by the compiler, but with lisp you are already there from the get go.<p>Programming in a tree is the "magic" that's unique to lisp. And it is a big deal.
Check out the edit mode called "parinfer" -- <a href="https://shaunlebron.github.io/parinfer/" rel="nofollow">https://shaunlebron.github.io/parinfer/</a><p>It integrates nicely into a number of different editors and takes the initially weird parentheses right out
Others have mentioned the correct books.<p>When you need libraries: <a href="https://www.quicklisp.org/beta/" rel="nofollow">https://www.quicklisp.org/beta/</a>