The LISP family of languages has a rich heritage, with some epic tomes gracing Computer Science history (and our shelves) over the years. Clojure is the latest entrant in the LISP family, bringing concurrency advances and the richness of the JVM ecosystem to the table. For Clojure this means there is much legacy code to plunder reuse.
The Little Schemer
An old favourite for many people who studied this in College or at home – The Little Schemer is the way many people have started the road to LISP. Described as ‘mind blowing’ by some – particular highlights include the ycombinator and the metacircular interpreter. In Clojure you can find the following online:
- Chapter 1 – Toys – Sidhant Godiwala – Julian Gamble
- Chapter 2 – Do it, Do It Again – Sidhant Godiwala – Julian Gamble – Emanon
- Chapter 3 – Cons the Magnificent – Sidhant Godiwala – Julian Gamble – Emanon
- Chapter 4 – Numbers Games – Sidhant Godiwala – Julian Gamble – Emanon
- Chapter 5 – The Multichapter Chapter – Julian Gamble – Emanon
- Chapter 6 – *Oh My Gawd*: It’s Full of Stars – Sidhant Godiwala – Julian Gamble – Emanon
- Chapter 7 – Shadows – Sidhant Godiwala – Julian Gamble – Emanon
- Chapter 8 – Friends and Relations – Sidhant Godiwala – Julian Gamble
- Chapter 9 – Lambda The Ultimate – Sidhant Godiwala – Julian Gamble
- Chapter 10 -What is the Value of All of This? – Sidhant Godiwala
- Other References – Michael Peterson Github
Practical Common LISP
Practical Common Lisp is the modern Common LISP Pickaxe – the guys at ITA software hand this to grads to get them up to speed. The guys at Relevance have spent some time bringing this across:
- Chapter 3. Practical: A Simple Database
- Chapter 5. Functions
- Chapter 6. Variables
- Chapter 7. Macros: Standard Control Constructs
- Chapter 8. Macros: Defining Your Own
- Chapter 9. Practical: A Unit Test Framework
- Chapter 10. Numbers, Characters, and Strings
- Chapter 11. Collections
- Chapter 16. Object Reorientation: Generic Functions
- Chapter 17. Object Reorientation: Classes
Paradigms of Artificial Intelligence Programming
PAIP is a well known book that has aged well – and still remains a delight to flip through. The author Peter Norvig has served as the head of Computational Science at NASA and is now Director of Research at Google. The opportunities for the Clojure community here are wide open because this book has some amazing stuff. In Clojure it looks like this:
- Chapter 2 – A Simple Lisp Program – Maik Schünemann
- Chapter 4 – GPS: The General Problem Solver – Maik Schünemann and Jeff Foster and Jeff Foster again
- Chapter 5 – ELIZA: Dialog with a Machine – Kevin Archie and Jeff Foster
- Chapter 6 – Building Software Tools – Jeff Foster and Jeff Foster again
- Chapter 7 – STUDENT: Solving Algebra Word Problems – Jeff Foster
On Lisp
Paul Graham has been an outstanding advocate and essayist for LISP, and many have explored LISP because of his writings. He’s also famous for his LISP startup Viaweb and it’s subsequent sale to Yahoo, plus his distinguished work in the YCombinator VC Fund. One of his primary arguments in the essay ‘Beating the Averages’ is that LISP helps programmers by being more expressive (more powerful) and the tool that LISP has that other languages don’t is macros. How do we learn about macros? Paul Graham wrote The Book on LISP macros. Here is what it looks like in Clojure:
- Chapter 2 – Functions – Rick Hall – Michael Fogus
- Chapter 3 – Functional Programming – Rick Hall – Michael Fogus
- Chapter 4 – Utility Functions – Rick Hall – Michael Fogus
- Chapter 5 – Returning Functions – Rick Hall – Michael Fogus
- Chapter 6 – Functions as Representation – Rick Hall
- Chapter 7 – Macros – Rick Hall – Stuart Halloway
- Chapter 8 – When to Use Macros – Rick Hall
- Chapter 9 – Variable Capture – Rick Hall – Stuart Halloway
- Chapter 10 – Other Macro Pitfalls – Rick Hall – Stuart Halloway
- Chapter 11 – Classic Macros – Rick Hall
- Other References – Rick Hall Github
Lisp In Small Pieces
Lisp In Small Pieces is a wonderful book by Christian Queinnec. Lots of people have written a LISP interpreter. The author writes eleven interpreters and two compilers.
The opportunities for this to be ported to Clojure are wide open – and work has only just begun:
- Ch 1: The Basics of Interpretation – Michael Fogus, Greg Hawkins
- Ch 2: Lisp 1, 2… – Greg Hawkins
- Ch 3. Escape & Return: Continuations – Greg Hawkins, Andrew Cowper
Structure and Interpretation of Computer Programs – SICP
- SICP Distilled – Tommy Hall
Updated 25 May 2013
- As discussed on Hacker News
- As discussed on Reddit
- This reaction from Peter Seibel was priceless!
Awsome resources!
Thanks for bringing together a great list! I also came across SICP in Clojure recently.
There’s also SICP in Clojure: http://sicpinclojure.com
Oh, someone just posted it already (btw, timezones for comments must be screwed up somehow 😉
@Darrick and @mnicky
I am aware of the SICP in Clojure site – and I agree that SICP is an awesome book. I have been disappointed by the progress on the site – it does appear to be abandoned – as others have commented.
http://sicpinclojure.com/?q=content/current-status#comment-170
For that reason I don’t think it yet qualifies as ‘living again in Clojure’
@mnicky – I’ve set the comments to be moderated to keep spam down. The timezones are in Australian Eastern Standard time.
Don’t forget Lisp in Small Pieces. One of the best lisp books ever.
Hi Tim,
I’ve added a link to Lisp In Small Pieces from Michael Fogus that I’ve come across.
This is a very useful compilation. Thank you for making the effort.
Thanks Tim. I’ve struggled to find decent chunks of Lisp in Small pieces in Clojure code online. If you find some – let me know and I’ll post it.
SICP in Clojure looks like it is now at http://www.sicpdistilled.com/