
Ask HN: Learning Lisp? - jonaf
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.
======
inetsee
Structure and Interpretation of Computer Programs (aka SICP), available here
[https://mitpress.mit.edu/sicp/full-
text/book/book.html](https://mitpress.mit.edu/sicp/full-text/book/book.html)

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.

~~~
shakna
The lectures for SICP are also up on youtube: [0]

[0]
[https://www.youtube.com/watch?v=2Op3QLzMgSY](https://www.youtube.com/watch?v=2Op3QLzMgSY)

------
mbrock
Some guy named Paul Graham wrote a book called "On Lisp".

[http://www.paulgraham.com/onlisp.html](http://www.paulgraham.com/onlisp.html)

It's a good introduction to the Lisp way of programming using Common Lisp.

------
vs4vijay
Go for Clojure if you want to explore Functional Programming, Clojure is 21st
Century Lisp.

Some good resources: 1\. [https://github.com/hemanth/functional-programming-
jargon](https://github.com/hemanth/functional-programming-jargon) 2\.
[https://maryrosecook.com/blog/post/a-practical-
introduction-...](https://maryrosecook.com/blog/post/a-practical-introduction-
to-functional-programming) 3\.
[http://www.secretgeek.net/lisp_truth](http://www.secretgeek.net/lisp_truth)
4\. [http://www.buildyourownlisp.com/](http://www.buildyourownlisp.com/) 5\.
OS Written is Lisp:
[https://github.com/froggey/Mezzano](https://github.com/froggey/Mezzano) 6\.
For Clojure: [https://changelog.com/posts/rich-hickeys-greatest-
hits](https://changelog.com/posts/rich-hickeys-greatest-hits) 7\.
[http://yogthos.github.io/ClojureDistilled.html](http://yogthos.github.io/ClojureDistilled.html)
8\. SICP [https://mitpress.mit.edu/sicp/](https://mitpress.mit.edu/sicp/) 9\.
Lisp [http://www.gigamonkeys.com/book/](http://www.gigamonkeys.com/book/)

------
mindcrime
[http://www.gigamonkeys.com/book/](http://www.gigamonkeys.com/book/)

------
avmich
I'd recommend [http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-
equat...](http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equations-of-
software/) .

A couple of "lower level" explanations -
[http://stevelosh.com/blog/2013/03/list-out-of-
lambda/](http://stevelosh.com/blog/2013/03/list-out-of-lambda/) (a somewhat
easier start) and [http://codon.com/programming-with-
nothing](http://codon.com/programming-with-nothing) \- show where part of the
power comes from.

------
jasonm23
Emacs...

Largely written in Lisp and is a great resource. Also has SLIME which is a
fantastic way to develop with Common Lisp.

Clojure support in Emacs (via Cider) is also great.

Emacs is often the first exposure that many get with Lisp (other than SICP).

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.

------
dontJudge
This article is good to get an idea what lisp is all about.

[http://www.defmacro.org/ramblings/lisp.html](http://www.defmacro.org/ramblings/lisp.html)

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.

Programming in a tree is the "magic" that's unique to lisp. And it is a big
deal.

~~~
bubblesocks
Lisp is awesome, but I think you're doing it a disservice by comparing it to
XML, which is a technology that was derived straight from Satan's bottom. Lisp
is elegant. XML, not so much.

~~~
kazinator
It's useful to compare Lisp to XML from the data notation aspect. As in, look,
we already had better ideas for tree-structured data being communicated in
text, forty years before XML.

------
cnp
Check out the edit mode called "parinfer" \--
[https://shaunlebron.github.io/parinfer/](https://shaunlebron.github.io/parinfer/)

It integrates nicely into a number of different editors and takes the
initially weird parentheses right out

------
informatimago
[http://cliki.net/Getting+Started](http://cliki.net/Getting+Started)

[http://cliki.net/Online+Tutorial](http://cliki.net/Online+Tutorial)

------
martinflack
Others have mentioned the correct books.

When you need libraries:
[https://www.quicklisp.org/beta/](https://www.quicklisp.org/beta/)

