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))))))