The art of the metaobject protocol
This book presents a new approach to programming language design, which resolves fundamental tensions between elegance and efficiency. Metaobject protocols are interfaces to the language that give users the ability to incrementally modify the language's behavior and implementation, as well as the ability to write programs within the language. In this way, a metaobject protocol allows users to adjust the language to better suit their needs. The book is divided into two parts. The first presents the concepts of metaobject protocol design. The presentation is based on a running implementation of a metaobject protocol. It also includes a number of exercises that provide further opportunity for exploration and point the way to important open issues. The second part of the book is a detailed specification of the CLOS Metaobject Protocol.
Kiczales, Gregor J .; des Rivieres, James; Bobrow, Daniel G. The art of the metaobject protocol. Cambridge, MA: MIT Press; 1991.