diff --git a/example.scm b/example.scm index c67eab1..dc63661 100644 --- a/example.scm +++ b/example.scm @@ -1,9 +1,18 @@ -(load "goof.scm") - +(import (goof)) (define (erathostenes n) (define vec (make-vector n #t)) - (loop/list ((:for i (up-from 2 (to n))) + (loop ((:for i (up-from 2 (:to n))) + (:when (vector-ref vec i)) + (:acc lst (listing i)) + (:for j (up-from (* 3 i) (:to n) (:by (* i 2))))) + => lst + (vector-set! vec j #f))) + +(define (erathostenes2 n) + (define vec (make-vector n #t)) + (loop/list ((:for i (up-from 2 (:to n))) (:when (vector-ref vec i))) - (loop ((:for j (up-from (* 2 i) (to n) (by i)))) + ;; Here we set all multiples of i to #f + (loop ((:for j (up-from (* 3 i) (:to n) (:by (* i 2))))) (vector-set! vec j #f)) i))