          `((println "----------------------------------------------------") 
            (println ~(str "Benchmarking: " f)) 
            (println "----------------------------------------------------") 
-           (println ~(str "Hashing File:") ~file) 
+           (println (str "Hashing File: " ~file " (" (~f ~file) ")"))
            (quick-bench (~f ~file)) 
            (println "----------------------------------------------------")))))
 

           ~@(doall 
               (mapcat 
                 (fn [[flag [f1 f2]]] 
                   [flag `(if (and ~f2 (= ~t "--file")) 
                            (bench-file-hash-function (first ~args) ~f2)
                            (bench-hash-function ~f1))])
                 (partition 2 hash-fn-map)))
           (println "Unknown Algorithm: " algorithm#))
         (catch Exception _# nil)))))


;; ## String Hashing

(defmacro bench-hash-function
  [string & fs]
  `(do
     ~@(for [f fs]
         `((println "----------------------------------------------------") 
           (println ~(str "Benchmarking: " f)) 
           (println "----------------------------------------------------") 
           (println (str "Hashing String: " ~string " (" (~f ~string) ")")) 
           (quick-bench (~f ~string)) 
           (println "----------------------------------------------------")))))

;; ## File Hashing
