Addendum



Ok, now lets talk about some issues that were glossed over in this tutorial...

First of all, Lisp code is often interpreted as well as compiled, often right within the same program... Because of this, the Lisp environments are not usually referred to as compilers but just as implementations.

(although even interpreted Lisp code is usually first compiled into byte code, but that's another story...)

Additionally, there are other great Lisp implementations that are worth mentioning- There is a detailed list available that Rainer Joswig and Bill Clementson have put together.

One major cheat that we made in this tutorial is that we wrote our game sentences using symbols

'(this is not how Lispers usually write text)

"Lispers write text using double quotes"

Symbols have a special meaning in Lisp and are used to store unique names of functions, variables, and other things. Because of this, Lisp treats symbols in special ways that are awkward for text messages (such as making them ALL CAPS...). Using strings instead of symbols allows text we work with to not be affected by any such quirks, but requires more esoteric commands for manipulating text. Also, working with strings is not so relevant to teaching the far more important symbol manipulation commands in Lisp.

One more thing we left out of the code is the defparameter command for creating global variables- Instead, we just used setf to declare variables (which works, but is considered bad style...)

Another simplification is that association lists (also called alists) are usually written using a dotted list, because it is slighlty more efficient and elegant to an experienced Lisper. This is confusing to beginners, however, because it requires an understanding of Cons Cells, which you can read about here.

Another glossed over issue is that SPELs are more commonly referred to as "Lisp true macros" and are created with the defmacro command, which is very confusing for teaching purposes. Read the following short essay as to why I think this name distinction is beneficial. And finally, there are ugly name collisions that can happen when a SPEL is written in the style of the game-action SPEL. If you read more advanced lisp materials this will be explained in greater detail.

Q. What should I read next to expand my knowledge of lisp?

A.

There are many great (and some downloadable) Lisp books available at the cliki website.
If you're interested in the most intense theoretical text, I would recommend the free ebook version of On Lisp by Paul Graham. The other books he has written and the essays on his website are also fantastic.

If you're interested in a more pragmatic tack, many Lispers are currently excited about the book Practical Common Lisp by Peter Seibel. Some chapters of this book are available on-line.