    (gen-bind
      (sized #(choose 0 %))
      (fn [num-elements-rose]
-       (gen-bind (gen-seq->seq-gen
-                  (repeat (rose/root num-elements-rose)
-                          generator))
+       (gen-bind (gen-tuple (repeat (rose/root num-elements-rose)
+                                    generator))
                  (fn [roses]
                    (gen-pure (rose/shrink core/vector
                                           roses)))))))

   (gen-bind
     (choose min-elements max-elements)
     (fn [num-elements-rose]
       (gen-bind (gen-seq->seq-gen
                  (repeat (rose/root num-elements-rose)
                          generator))
                 (fn [roses]
                   (gen-bind
                     (gen-pure (rose/shrink core/vector

     (cons r1
           (lazy-random-states r2)))))

(defn- gen-tuple
  "Takes a collection of generators and returns a generator of vectors."
  [gens]
  (make-gen
   (fn [rnd size]
