Lisp Outside the Box / Contents

This was my draft outline. Eleven of the chapters are now available as drafts in PDF form - just follow the links below.

Early chapters introduced Common Lisp and were implementation neutral. The rest of the book revolved around specific proprietary and non-proprietary libraries; each part focused 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 were going to drive the contents of earlier ones). After a while I went back to the beginning and continued work from there.

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. Preliminaries
  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"

We're ready to graduate to writing servers. We'll be working with several libraries over the next four chapters and in particular the Hunchentoot web server. We'll consider socket communications in general, different approaches to HTTP, techniques for parsing input and generating output, and how to make your server "solid".

Although we'll be working on Steel Bank Common Lisp (SBCL) you might have some trouble spotting that. All the examples will be shown within the SLIME REPL () and we'll be using portable interface layers for sockets and threading which hide implementation-specifics from the programmer. We'll run on Ubuntu Linux; again that won't be apparent from the code which will be OS independent.

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

  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 - 2011. Some rights reserved. This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/