Common Lisp programming is often presented as “interactive”. In most languages, modifications to your program are applied either by recompiling it and restarting it. In contrast, Common Lisp lets you incrementally modify your program while it is running. While this approach is convenient, especially for exploratory programming, it also means that the state of your program during execution does not always reflect the source code. You do not just define new constructs: you look them up, inspect them, modify them or delete them.