In three distinct but related sections, Pierre de Lacaze presents and describes metaprogramming, metaclasses and metaobject protocols.
Metaprogramming, is today somewhat synonymous with the notion of programming with macros. Pierre describes in detail what macros are, how to write them correctly so that they are hygienic, how to debug them and when to use them. Examples are provided in Common Lisp. He also briefly describes what metaprogramming looks like in other less homoiconic languages. Metaclasses are described along with what they are used for and can accomplish. A specific use-case is examined in depth. This is done in the context of the Common Lisp Object System (CLOS) and a brief introduction to CLOS is provided. The section on metaobject protocols leverages material from the seminal book "The Art of the Metaobject Protocol" (AMOP) and describes the problems that MOP's were designed to solve. Pierre explains how to design and implement a metaobject protocol for CLOS through code examples that implements the 'defclass' macro which is CLOS's class definition mechanism. The implementation is the extended to support metaobject protocol functionality.