   (->> (tuple char-keyword-first (vector char-keyword-rest))
        (fmap (fn [[c cs]] (clojure.string/join (cons c cs))))))
 
+(defn ^:private resize-symbolish-generator
+  "Scales the sizing down on a keyword or symbol generator so as to
+  make it reasonable."
+  [g]
+  ;; function chosen by ad-hoc experimentation
+  (scale #(long (Math/pow % 0.46)) g))
+
 (def keyword
   "Generate keywords without namespaces."
   (->> (tuple keyword-segment-first (vector keyword-segment-rest))
        (fmap (fn [[c cs]]
-               (core/keyword (clojure.string/join ":" (cons c cs)))))))
+               (core/keyword (clojure.string/join ":" (cons c cs)))))
+       (resize-symbolish-generator)))
 
 (def
   ^{:added "0.5.9"}

  "Generate symbols with optional namespaces."
  (frequency [[100 (->> (tuple namespace char-symbol-first (vector char-symbol-rest))
                        (such-that (fn [[_ c [d]]] (not (+-or---digit? c d))))
                        (fmap (fn [[ns c cs]] (core/symbol ns (clojure.string/join (cons c cs))))))]
              [1 (return '/)]]))

(def ratio

  "Generate symbols without namespaces."
  (frequency [[100 (->> (tuple char-symbol-first (vector char-symbol-rest))
                        (such-that (fn [[c [d]]] (not (+-or---digit? c d))))
                        (fmap (fn [[c cs]] (core/symbol (clojure.string/join (cons c cs)))))
                        (resize-symbolish-generator))]
              [1 (return '/)]]))

(def
