;; for completeness' sake (module lazy-prime-numbers (lazy-prime-numbers) (import chicken scheme) (use lazy-seq) (define lazy-prime-numbers) (define (prime? n) (let loop ((s lazy-prime-numbers)) (let ((np (lazy-head s))) (cond ((> np (sqrt n)) #t) ((zero? (modulo n np)) #f) (else (loop (lazy-tail s))))))) (set! lazy-prime-numbers (lazy-seq (cons 2 (lazy-filter prime? (lazy-numbers start: 3))))) )