Picture of stu

PCL -> Clojure

My current leisure-time project is porting the examples from Peter Seibel's excellent Practical Common Lisp (PCL) to Clojure.

I think Clojure is interesting for three reasons:

  1. Clojure is Lisp, but minus historical baggage.
  2. Clojure gives full access to the JVM and Java libraries.
  3. Clojure groks concurrency and state.

My ground rules are simple:

  • I am not going to port everything, just the code samples that interest me as I re-read Practical Common Lisp.
  • Where Peter introduced Common Lisp features in a planned progression, I plan to use whatever Clojure feature come to mind. So I may jump straight into more "advanced" topics, even in the intro chapters.

Please do not assume that this port is a good introduction to Common Lisp! I am cherry-picking examples that are interesting to me from a Clojure perspective. If you want to learn Common Lisp, read PCL. In fact, you should probably read the relevant chapters in PCL first, no matter what.

The Series

Talks

I am available to give conference talks on Clojure. Check the schedule for an event near you, or contact Relevance (info@thinkrelevance.com) to schedule an event.

Notes

Comments
  1. FogusSeptember 17, 2008 @ 01:51 AM

    For some time now I have wanted to port Graham’s On Lisp code to Clojure. I have to image that someone else has done it by now.

    I have been watching your repo for the past few days… looking forward to seeing more.

    -m

  2. Josip GracinSeptember 17, 2008 @ 04:58 AM

    Very nice blog! Keep up the good work!

  3. Tom EmersonSeptember 17, 2008 @ 03:29 PM

    Stuart, great work here. Keep it going. I’ve been thinking of doing the same for PAIP: good stuff.

  4. Hans HübnerOctober 02, 2008 @ 02:12 AM

    Thanks for the good work, your examples helped me get going with Clojure. I wonder about the ‘spit’ function that you use here. Is it your invention? It does not seem to be part of Clojure.

    Cheers, Hans

  5. ronenOctober 05, 2008 @ 09:20 PM

    Excellent! Examples is the thing that im missing the most while studying Clojure, sure i can follow Lisp examples however Clojure data structures are quite different from what i understand so it won’t be a direct port.