People* like to say that Common Lisp is the programmable programming language, or the #1=(programmable . #1#) programming language: possibly because much of what Common Lisp provides is in some way malleable: the reader, the printer, the pretty-printer, the object system and the syntax are all to a large extent customizeable, through *readtable*, print-object, *print-pprint-dispatch*, the Metaobject Protocol and macros respectively.
Not everything in CL is in such a marvellous state of perfect adaptability – though perfect adaptability does not necessarily mean unlimited customizeability, as there are concerns about being able to compile to efficient code where that is desired as well as being able to mold the system to meet a set of needs. I've already discussed one case of (by default) non-extensibility, that of subclassing the sequence System Class; Common Lisp has a wide range of functionality that is applicable to sequences, but no way of defining new kinds of sequence, instead restricting the applicability of those sequence functions to just singly-linked lists and vectors. In this modern age, that's a little bit unambitious, and so I presented a paper at the International Lisp Conference this year about how to extend CL to allow the user to define his own sequence classes.
For the 4th European Lisp Workshop (in conjunction with ECOOP), I've looked at a similar example of user-extensibility, though maybe a little more esoteric: examining the ability of the user to define subclasses of the specializer metaobject class (and how to use those new specializers in the existing CLOS metaobject protocols). The first draft of the writeup around this issue is available; the document linked there is not final, but it is correct in the broad brushstroke summary, which is that in this area the Metaobject Protocol is poorly implemented (an even more executive summary might be: get SBCL 1.0.7 if you want to try it out...)
[*] some people, anyway. It's possible for people to get caught up in hype and to make claims that they cannot themselves justify, appealing instead to some higher authority when challenged; one common pattern with respect to Common Lisp could be called the brucio pattern.
