 ;;;; ___________________________________________________________________________
 ;;;; Simple rearranging of arguments.
 
+;;;; Define a macro:
+
 (defmacro my-if-not-1
   ([test then else]
    (list 'if test else then)))
+
+;;;; A use of the macro:
 
 (fact
   (let [x 99]

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