   "Calculate the shortest string that is more complicated than the specified sym."
   [sym]
   `(let [source# (-> ~sym quote repl/source-fn)]
-     (->> (babel)
+     (->> (library-of-babel)
        (drop-while #(<= (complexity %) (result-length source#)))
        first)))
 

;;; Air on a \G String ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

(comment
  (repeat 1000000000000 \G)
  )

(defmacro description-length [expr]
  (-> expr print-str count))

      expand
      (cons []))))

(defn library-of-babel []
  (let [ascii (->> (range 32 127) (map char))]
    (->> ascii
       kleene*
       (map (partial apply str)))))

(fact "We can construct all strings as a lazy sequence."
  (->> (library-of-babel) (take 5)) => ["" " " "!" "\"" "#"]
  (nth (library-of-babel) 364645) => "GEB")

(fact "Lexicons aren't very random."
  (randomness (take 10000 (library-of-babel))) => #(< % 1/100))





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