hmmm pasted by certainty on Sat May 25 12:33:43 2013

(define (draw-samples seq length maxlength)
  (lazy-take
    (or length (and max (random maxlength))) seq))


(define (make-number-seq min max filter succ)
  (let ((seq (lazy-filter filter (lazy-iterate succ min))))
    (if max
        (lazy-take (+ 1 (- max min)) seq)
        seq)))

(define (gen-fixnum/random #!key (min 0) (max 39085789345) (filter (constantly #t)) (after identity))
  (let ((next (lambda _ (after (random-int min max)))))
    (make-number-seq (next) max filter next)))

;; list
(define (gen-list generator #!key (max 10) (length #f))
  (lazy-repeatedly
   (lambda ()
     (lazy-seq->list
      (draw-samples generator length max)))))

random-int was missing pasted by certainty on Sat May 25 12:35:12 2013

(define (random-int min max)
  (+ min (random (+ 1 (- max min)))))

(define (draw-samples seq length maxlength)
  (lazy-take
    (or length (and max (random maxlength))) seq))


(define (make-number-seq min max filter succ)
  (let ((seq (lazy-filter filter (lazy-iterate succ min))))
    (if max
        (lazy-take (+ 1 (- max min)) seq)
        seq)))

(define (gen-fixnum/random #!key (min 0) (max 39085789345) (filter (constantly #t)) (after identity))
  (let ((next (lambda _ (after (random-int min max)))))
    (make-number-seq (next) max filter next)))

;; list
(define (gen-list generator #!key (max 10) (length #f))
  (lazy-repeatedly
   (lambda ()
     (lazy-seq->list
      (draw-samples generator length max)))))

it draws the same samples pasted by certainty on Sat May 25 12:58:46 2013

(define (gen-bool)
  (lazy-repeatedly (lambda () (= (random 2) 1))))

#;233> (lazy-seq->list (lazy-take 3 (gen-list (gen-bool) length: 4)))                                                                                                                 
((#t #f #f #f) (#t #f #f #f) (#t #f #f #f))

seems to work added by certainty on Sat May 25 14:38:36 2013

(define (gen-list seq #!key (max 10) (length #f))
  (let loop ((sample (draw-samples seq length max)) (seq seq))
    (lazy-seq
     (let ((new-seq (lazy-drop (lazy-length sample) seq)))
       (cons (lazy-seq->list sample) (loop (draw-samples new-seq length max) new-seq))))))