lazy-prime-numbers.scm added by klovett 1 days ago


(module lazy-prime-numbers

(;export
  lazy-prime-numbers)

(import
  scheme (chicken base) 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)))))

) ;module lazy-prime-numbers