   (let [input (vector (tuple key-gen val-gen))]
     (fmap (partial into {}) input)))
 
-(defn hash-map 
+(defn hash-map
   "Like clojure.core/hash-map, except the values are generators.
-   Returns a generator that makes maps with the supplied keys and 
-   values generated using the supplied generators."
+   Returns a generator that makes maps with the supplied keys and
+   values generated using the supplied generators.
+
+  Examples:
+
+    (gen/hash-map :a gen/boolean :b gen/nat)
+  "
   [& kvs]
   (assert (even? (count kvs)))
   (let [ks (take-nth 2 kvs)

                 (choose 97 122)])))

(def string
  "Generate strings."
  (fmap clojure.string/join (vector char)))

(def string-ascii


(defn choose
  "Create a generator that returns numbers in the range
  `min-range` to `max-range`, inclusive."
  [lower upper]
  (make-gen
    (fn [^Random rnd _size]
