         (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`, `->`.

;;;; ___________________________________________________________________________
;;;; Simple rearranging of arguments.

(defmacro my-if-not-1
  ([test then else]
   (list 'if test else then)))

(fact
  (let [x 99]

                 (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)
