Peter Seibel is a programmer and author of Practical Common Lisp, and writes about Lisp, code and software craft.
HN links it mainly for the free Practical Common Lisp book, which commenters recommend as a starting point for learning Common Lisp.
First you have to choose your flavor. If you want to use JVM, probably clojure. Otherwise Scheme, Common Lisp and Racket. Scheme is rather minimalistic, Common Lisp is very functional and Racket is the most modern one I guess. I ended up with Common Lisp and I rather don't look for change. SBCL is implementation I use and like it. Probably the best one and quite portable.
Emacs seems the best choice for Lisp, since it is scripted in Lisp and it's best adapted to it probably. However when I started, I was already so used to vim that I kept going with it. Maybe not the best option, but it's ok, maybe just a little bit more effort to automatize some stuff.
If you choose Common Lisp, this is probably the best book for start: http://www.gigamonkeys.com/book/ . Anyway be prepared, Lisp is not easy to grasp at first, but as soon you do, you will probably love it and appreciate way it is. :)
There was a blog post from Peter Seibel recently called [Code Is Not Literature)](https://gigamonkeys.com/code-reading/) which pointed out that although everyone seems to agree reading code is great, very few tend to do it regularly.
I feel like I get a lot more out of messing with / hacking on code than I do from reading it. I'm sure people vary, but I've got loads more out of open source contributions to sometimes small projects, and not very much out of trying to do something like read the code for the Glasgow Haskel Compiler or something.
So for code to read, I think having an in is crucial, at least for me. So I'd say, find a cool, maybe small open source project, look at the issue tracker if it has one, and try to implement something. You'll only really know if it's good code (or why) after you start trying to change it.
For Common Lisp, there are several free books available:
- Practical Common Lisp (aimed at people who know how to program in a more mainstream language already) [1]
- Paradigms in Artificial Intelligence Programming (my personal favorite) [2]
- Common Lisp: A Gentle Introduction to Symbolic Computation (aimed at absolute beginners of programming) [3]
I highly recommend the r/lisp Reddit community. Reddit as a platform has its issues, but the Common Lisp community there is very responsive and very helpful.
Lastly, you might be interested in checking out Kandria [4], a game written entirely in Common Lisp, to be released imminently on Steam.
[1] https://gigamonkeys.com/book/
[2] https://github.com/norvig/paip-lisp
[3] https://www.cs.cmu.edu/~dst/LispBook/
[4] https://store.steampowered.com/app/1261430/Kandria/
I think this often boils down to the same criticisms directed to LISP's FORMAT? https://gigamonkeys.com/book/a-few-format-recipes has my favorite take, "While FORMAT's control strings can be cryptic, at least a single FORMAT expression doesn't clutter things up too badly."
Feels like the same would be true for the array languages. Obviously code golfing it all down to be an array manipulation is going to be unreadable. But if you are legit doing manipulations on an array of data, probably going to be pretty hairy in the expanded version, as well. I can see wins from not necessarily naming every intermediate part of the process.
Two important newer Common Lisp books worth mentioning:
- Common Lisp Recipes - http://weitz.de/cl-recipes/ - the de-facto go-to book on practical Common Lisp usage, for people with at least basic familiarity with the language.
- Land of Lisp - http://landoflisp.com/ - introduction to CL + overview of some more distinct aspects of other Lisps (often portable to CL as a library), teaching by means of writing small games; quite... peculiar.
Also, if someone wants to start with Common Lisp, then Practical Common Lisp (PCL) is usually the book for it. The entire book is available on-line for free: http://www.gigamonkeys.com/book/.
My favourite is "Practical Common Lisp" by Peter Seibel (https://gigamonkeys.com/book/)
Not only is the book free to read (although I would suggest to pay for it if you like it!) The code to parse binary files actually "inspired" my design of an actual production application which was very flexible, succinct and, most importantly, so fast I had to spend a lot of effort convincing people the numbers are actually true.
It taught me some important lessons about how you can achieve performance with Lisp languages and the real reasons for the power of macros. Not too shabby for the first book on Lisp I red!