The Art of the Metaobject Protocol by Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow
Common Lisp is my favorite programming language for many reasons, not the least of which is its balance of clear and concise code. Terse code often hides the underlying meaning, while boilerplate code hampers the ability to quickly grasp the intent. Experienced Common Lispers produce code that’s easy to grab hold of and run with even years after writing.
The Metaobject Protocol is one such feature of Common Lisp that aids in this ability. Technically speaking, this protocol is not part of ANSI Common Lisp, as its informal specification was created after the Common Lisp specification. However, most modern Common Lisp implementations include it.
Like the Common Lisp specification itself, this book was geared towards both programmers (users) and language implementors. Many issues arise when creating a specification in such a way that it is favorable to both parties, and this book covers them in elucidating detail. Examples are given throughout on how to use the protocol, from logging slot modifications to expanding the keyword options to slots and classes. Along the way I picked up new bits of previously unknown information, such as funcallable standard objects.
Because of the dual nature of this book, it is great for both Common Lispers and language designers.
In summary, this book was a highly welcomed addition to my ever growing Common Lisp library.