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!
Pingback: The Little Schemer in Clojure | Jumble Agile Manuals
Pingback: Amazing LISP Books living again in Clojure « thoughts…