                  (do (println "It's small") :small)))
   => :large)
 
+;;;; What's happening?
+;;;; - Before compilation, macro calls are replaced with their macro expansion.
+
+;;;; What's a macro expansion?
+
 (fact
   (macroexpand-1 '(my-if-not-1 (> x 100)
                                (do (println "It's large") :large)

  => '(if (> x 100)
        (do (println "It's small") :small)
        (do (println "It's large") :large)))

;;;; ___________________________________________________________________________
;;;; Intro to syntax-quote and unquote.

        (do (println "It's small") :small)
        (do (println "It's large") :large)))

;;;; Is this a good use of macros?
;;;; Yes, but...
;;;; - `if-not` is built in to Clojure.
;;;;   - `if-not` is a macro.
;;;;   - `if-not` is better than `my-if-not-1`.
;;;;   - Note that much of Clojure is implemented using macros.
;;;;     e.g. `and`, `or`, `let`, `cond`, `while`, `letfn`, `with-redefs`, `->`.
