Alan Crowe



My personal homepage is hosted by Freeserve and contains essays, both personal and political.

These pages, hosted by Demon, are my technical pages, mostly about a computer programming language called ANSI Common Lisp, CL for short.

Before you start

Learning Common Lisp is a lot of fun. However, most tutorials assume that your friendly system administrator has provided you with a syntax aware editor and a front end to the local Lisp implementation. I've noticed on comp.lang.lisp that some persons are missing out and not even realising it. A basic set up, using Emacs and CMUCL on FreeBSD functions like this. The attraction of using the "inferior lisp" mode built into Emacs is solely that it is built in: you can try it out without installing anything more. I actually use Superior Lisp Interaction Mode for Emacs

Simple examples in CLX

CLX is a library to let CL programs talk the X11 protocol. It plays the same role that Xlib does for C

The CLX Programmer's Reference and the Xlib Programming Manual both offer a big, complicated example. I prefer minimalist examples. I've written a sequence of simple examples to help others get started with CLX.


CL has an object system, called CLOS. One can write computer programs in an object oriented style using the object system specified in the ANSI standard for the language. The programmer has the option of defining additional method combinations to suit his particular needs. I tried to write an introduction to CLOS with method combination as the unifying theme. This is a bad idea. Nevertheless, it is an interesting idea and I want to work on it some more one day. It might serve as a re-introduction to Object Orientated Programming, for curious programmers who say "I've grasped the basics, but what is the point of all these classes and methods?"

3D Viewer

Lets you look around a wire frame. Follows up "Simple Examples in CLX" with a not-so-simple example. The fun of this code is for hobby programmers who can learn CL by writing code that generates objects as wire frames, and then move on to hacking the viewer code themselves.


Locatives are a method of providing CL with something very close to the C language concept of a pointer. While it is not useful in its self, it provides a nice example of the use of get-setf-expansion.