 
 ;; (util/run-and-measure-timing
 ;;   (clojure.set/intersection
-;;     (words-of-length @db 3)
-;;     (words-excluding @db \A \E \I \O)
-;;     (words-with-letter-position @db \F 0)
+;;     (words-of-length @word-db 3)
+;;     (words-excluding @word-db \A \E \I \O)
+;;     (words-with-letter-position @word-db \F 0)
 ;;     ))
 ;;
 ;;  => {:response #{"FRY" "FLY" "FUG" "FUD" "FLU" "FUN" "FUB" "FUR"},

;; Global State
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(def db (atom nil))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; TODO: this is somewhat ugly.

(defn word-triples [word]
  (set (concat
         (map #(apply tuple %)
           (apply concat
             (for [c (map char (range (int \A) (inc (int \Z))))
