   (->> (champernowne-word) (take 16)) => [0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2])
 
 
+
+
+
+
+
+
 ;;;;;;;;;;;;;;;;
 ;;; Anti EP ;;;;
 ;;;;;;;;;;;;;;;;

      expand
      (cons []))))

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

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

(defn dna []
  (->> "GATC"
       kleene*
       (map (partial apply str))))

(fact "We can construct all genes as a lazy sequence."
  (->> (dna) (take 5)) => ["" "G" "A" "T" "C"]
  (nth (dna) 7154) => "GATTACA")

(fact "Lexicons aren't very random."
  (randomness (take 1000 (babel))) => #(< % 1/100)
  (randomness (take 1000 (dna))) => #(< % 1/100))


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

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

