Working through the examples in On Lisp, translating them to idiomatic Clojure.
Clojure
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.gitignore
README.md
ch11.clj
ch12.clj
ch15.clj
ch16.clj
ch17.clj
ch18.clj
ch19.clj
ch2.clj
ch3.clj
ch4.clj
ch5.clj
ch6.clj
ch7.clj
ch8.clj
ch9.clj
project.clj

README.md

Translations to Clojure of On Lisp by Paul Graham

This is not meant to be a complete reference by any means, it was simply a by-product of reading the book while teaching myself Clojure.

It's also a work in progress and I expect to gradually work through at least some of the larger macros presented in the second half of the book.

Get the Book (it's great)

It's available for free here

Anyway, what follows probably won't be very comprehensible without it.

Other Notes

To state the (hopefully) obvious, this code is not meant to be just executed. The code has all been developed via Slimv/Swank which is to incrementally push selected forms to the REPL, hence the mixture of definition and execution at the top level of each file. Also, no attempt has been made to make any code here production quality.

In some places I faced various difficulties or misunderstandings, but rather than rewrite or edit my comments, I've just added my correction or new understanding below, so read on if something looks obviously wrong.

Mistakes or Poor Style?

If you find a mistake or any other poor forms, please feel free to file a bug or comment on the offending line, or of course just make the project your own.

License

Creative Commons License
On Lisp in Clojure by pangloss is licensed under a Creative Commons Attribution 3.0 Unported License.
Based on a work at http://www.paulgraham.com/onlisp.html.