 
 ;; ## String Hashing
 
-(def ^:const ^String HELLO_WORLD "Hello, World!")
-
 (defmacro bench-hash-function
-  [& fs]
+  [string & fs]
   `(do
      ~@(for [f fs]
          `((println "----------------------------------------------------") 
            (println ~(str "Benchmarking: " f)) 
            (println "----------------------------------------------------") 
-           (println ~(str "Hashing \"" HELLO_WORLD "\"")) 
-           (quick-bench (~f ~HELLO_WORLD)) 
+           (println (str "Hashing String: " ~string " (" (~f ~string) ")")) 
+           (quick-bench (~f ~string)) 
            (println "----------------------------------------------------")))))
 
 ;; ## File Hashing

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


           ~@(doall 
               (mapcat 
                 (fn [[flag [f1 f2]]] 
                   [flag `(case ~t
                            "--file" (bench-file-hash-function (first ~args) ~f2)
                            "--text" (bench-hash-function (first ~args) ~f1)
                            (bench-hash-function "Hello, World!" ~f1))])
                 (partition 2 hash-fn-map)))
           (println "Unknown Algorithm: " algorithm#))
         (catch NullPointerException e# nil)
         (catch Exception e#
           (.printStackTrace e#))))))
