The Lisp family of languages has a construct called a macro that allows you to write programs that write other programs. It is hard to overstate the power that this kind of programming can bring. It is also hard to overstate the mess you will make if you do it wrong!
Today we will talk about macros and some of the useful things you can do with them.