         remaining (rest transforms)]
     (case op
       ;;TODO - Multimethod here for extensibility
-      ;;TODO - How to do mapcat (not nested loop-recur)
       :map
       `(let [h2# (~fct ~h)]
          (inline-reducer ~reducer ~remaining ~r h2#))

      `(if (~fct ~h)
         (inline-reducer ~reducer ~remaining ~r ~h)
         ~r)
      `(~reducer ~r ~h))))

(defmacro inline-reduce

;; - Show the example of efficient loop generation
;; --------------------------------------------------------

;; Note: how to do recursive nested loops:
#_(loop [i 5
         r 0]
    (if (pos? i)
      (recur
        (dec i)
        (loop [j 5
               r r]
          (if (pos? j)
            (recur (dec j) (inc r))
            r)
          ))
      r))

;; Phase 1
#_(defmacro inline-reduce
    [reducer initial transforms coll]
