Today I didn't feel like coding because I only got to this at work and I'm quite distracted right now. Instead, I read Chapter 7 of Practical Common Lisp which was on the standard control-constructs in CL that are implemented as macros. It went over when
, unless
, cond
, and
, or
, and all the looping constructs (do
and its higher-level children and loop
).
This explains a whole lot. I was wondering where all this different looping syntax I was seeing and where the when
were coming from. Are they special operators? Are they functions? That wouldn't make sense. Turns out that they're all macros. That's awesome! No need to hardwire all these commands to the base language. Instead, you can write new Lisp syntax in Lisp. I knew they were powerful, but I had no idea that a lot of the basic syntax I keep seeing is also written in Lisp. I feel less confused knowing where each of these constructs is coming from.