Macros Quick Review 

Typically, when we call a procedure we follow three steps:

  1. Evaluate the operator

  2. Evaluate the operands

  3. Apply the operator to the operands

However, with macros, we do the same steps, but in a slightly different order:

  1. Evaluate the operator

  2. Apply the operator to the operands

  3. Evaluate the operands

But wait, how could we apply a procedure when we don’t even know what we’re applying it to? Believe it or not, you actually can. When we write a macro, the goal is to create a list that adds in all of our operands in the correct spot. And if you remember, any list is a functional line of code in scheme, so by creating a list, we are running some sort of function. So basically, whenever you write a macro, you want to take your operands and do a sort of fill in the blank, so that the list that your macro returns can run and return the correct value.