;; Using lazy lists. (load "search-for-primes-common.ss") (load "search-for-primes-lazy.ss") (define (timed-function-test fun) (let ((start-time (runtime)) (result (fun)) (end-time (runtime))) (cons result (- end-time start-time)))) (define (timed-prime-test n) (timed-function-test (lambda () (cons (prime? n) n)))) (define (search-for-primes how-many start) (define odd-numbers (lazy-filter odd? (infinity-starting-at start))) (define (decide test-result) (caar test-result)) (define (get-rid-of-primality test-result) (cons (cdar test-result) (cdr test-result))) (lazy->list (lazy-map get-rid-of-primality (lazy-filter decide (lazy-map timed-prime-test odd-numbers) how-many))))