/* stream programming example: sieve of Erathosthenes 10-25-1993 AG */ /* To print all primes, say `print primes'. To get the list of the first N primes, say `list (take N primes)'. */ include print; private sieve, ndivby; ints N = bin N (ints (N+1)); primes = sieve (ints 2); sieve (bin X Xs) = bin X (sieve (filter (ndivby X) Xs)); ndivby M N = N mod M <> 0;