(defn short-name-seq "Lazy infinite seq of short names. like a,b,c..aa,bb,cc..zzzzz" [] (let [letters (map str "abcdefghijklmnopqrstuvwxyz")] (mapcat (fn [length] (map (fn [letter] (apply str (repeat length letter))) letters)) (range 1 Long/MAX_VALUE)))) ; unit test (deftest test-short-name-seq (let [short-names (vec (take 1000 (short-name-seq)))] (is (= (get short-names 0) "a")) (is (= (get short-names 1) "b")) (is (= (get short-names 25) "z")) (is (= (get short-names 26) "aa")) (is (= (get short-names 345) "hhhhhhhhhhhhhh")) (is (= (get short-names 733) "fffffffffffffffffffffffffffff"))))