 ;;      :time-taken 654}
 
 
-
+;; (util/run-and-measure-timing
+;;   (pp-letter-frequency-distribution))
+;;
+;; | Term | Words Occurred |      % |
+;; |------+----------------+--------|
+;; |    E |         121433 |  69.98 |
+;; |    S |         104351 |  60.13 |
+;; |    I |         102392 |  59.01 |
+;; |    A |          94264 |  54.32 |
+;; |    R |          91066 |  52.48 |
+;; |    N |          84485 |  48.69 |
+;; |    T |          83631 |  48.19 |
+;; |    O |          79663 |  45.91 |
+;; |    L |          68795 |  39.64 |
+;; |    C |          55344 |  31.89 |
+;; |    D |          47219 |  27.21 |
+;; |    U |          46733 |  26.93 |
+;; |    P |          40740 |  23.48 |
+;; |    M |          39869 |  22.98 |
+;; |    G |          38262 |  22.05 |
+;; |    H |          33656 |  19.40 |
+;; |    B |          26736 |  15.41 |
+;; |    Y |          24540 |  14.14 |
+;; |    F |          17358 |  10.00 |
+;; |    V |          14844 |   8.55 |
+;; |    K |          12757 |   7.35 |
+;; |    W |          11310 |   6.52 |
+;; |    Z |           7079 |   4.08 |
+;; |    X |           4607 |   2.65 |
+;; |    Q |           2541 |   1.46 |
+;; |    J |           2467 |   1.42 |

;; trivial to implement using the facilities we have created for parsing and
;; graph construction.  Primarily, these are responsible for atomic interaction
;; with global state, which is limited to only the single atom 'word-db'.
;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Hangman Queries
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(defn words-of-length [g length]
  (set (map s (query g nil :length length))))


;; (util/run-and-measure-timing
;;   (words-of-length @word-db 2))

                 (list (list word c -1))
                 (map #(conj (list c %) word) posns)))))
         [(tuple word :length (count word))
          (tuple word :type   :WORD)])))


(defn word-collection-triples [coll]
  (r/fold clojure.set/union clojure.set/union
