Lisp Outside the Box / Contents

This is very much a draft outline. Both overall breakdown and specific chapter titles are likely to change over the coming months.

Early chapters introduce Common Lisp and are implementation neutral. The rest of the book revolves around specific proprietary and non-proprietary libraries; each part focuses more or less on a different lisp implementation: Allegro, Clozure, SBCL, LispWorks, Clojure.

I started writing in the middle (because the needs of later chapters will drive the contents of earlier ones). As each chapter becomes ready for public consumption I'll link to it from this page and drop a note to my blog. At some point I intend to come up with solutions to exercises and they'll be linked from here too.

Something you hoped to see not on the list? I can but apologise.

Found a mistake? Check whether someone else beat you to it, then let me know.


Introduction

PART ONE "Open the Box"

  1. Getting started
  2. Basics
  3. Controls
  4. Standard tools
  5. I/O

PART TWO "Inventory of the Box"

  1. Portable State
  2. CLOS
  3. Types
  4. Hmm, maybe it's time we mentioned Lists
  5. Programs as data
  6. What Makes Great Lisp
  7. What Makes Lisp Great

PART THREE "Libraries Inside the Box"

Most lisp implementations are accompanied by a rich set of supplementary libraries. Although the aim of this book is to look “outside the box”, it’s worth noting that the box is typically larger than you’d think; so let’s use a few of the libraries which accompany one of the lisp distributions as our starting point.

We’ll start our tour of lisp libraries with a look at a persistent memory system called AllegroCache. This library is proprietary and it ships with Allegro Common Lisp (ACL).

We’ll wander through the AllegroCache documentation looking out for salient features. These will lead us to a couple of ubiquitous extensions to Common Lisp (memory management, and multithreading) and we’ll digress to examime them in some detail.

The Express Edition of ACL is free for personal use and will be suitable for running the examples in the next two chapters. It has a number of built-in restrictions; the one that’s most likely to bite is its limit of three AllegroCache connections and I’ll remind you of that later. Chapters 15 and 16 are more general and with little modification the examples can be run on most implementations.

  1. Persistence with AllegroCache
  2. Further AllegroCache
  3. Concurrency
  4. Memory

PART FOUR "Libraries Outside the Box"

It's times to take a first look outside. We’ll download and install the ch-image image processing library and put it through its paces on Clozure Common Lisp. Along the way we’ll pause to consider two invaluable tools: the SLIME development environment and ASDF for system definition. Image processing can get hungry for machine cycles, so this will also be a good opportunity for discussing optimizations.

All the libraries we’ll be looking at here, along with Clozure CL itself, are open-source and free to use.

  1. Image Processing
  2. SLIME
  3. Systems
  4. Performance

PART FIVE "Server Boxes"

  1. Serving HTTP
  2. Parsing Input
  3. Generating HTML
  4. Hunchentoot

PART SIX "Gift-wrapping the Box"

  1. A desktop application
  2. GUI development environments
  3. Internationalization
  4. World building

PART SEVEN "Talking to Other Boxes"

  1. Talking to C
  2. RabbitMQ
  3. Clojure

APPENDICES

  1. Where to obtain everything mentioned in the book
  2. The LLGPL

Copyright © Nick Levine 2009. This document is provided "as is", without any express or implied warranty. In no event will the author be held liable for any damages arising from the use of this document. You may download a copy of this document for personal viewing and printing. You may not otherwise duplicate, reproduce or redistribute this document in any form without the express permission of the copyright holder.