So far we have seen simple examples of how Nim programs can be written and we have looked at how the various language features are defined in quite a formal manner. This part focusses on advanced programming techniques, in particular how Nim’s macro system can be used to raise the level of abstraction. This part assumes that the reader is already familiar with Chapter 28, Macros.