(LETREC PRIMES (PRIMES LAMBDA (X) (LET (SIEVE X INTSFROM2 (QUOTE NIL)) (INTSFROM2 INTS (QUOTE 1)))) (SIEVE LAMBDA (X STREAM LST) (IF (EQ X (QUOTE 0)) LST (SIEVE (SUB X (QUOTE 1)) (FILTER (CAR STREAM) (FORCE (CDR STREAM))) (CONS (CAR STREAM) LST)))) (INTS LAMBDA (X) (LET (CONS Y (DELAY (INTS Y))) (Y ADD X (QUOTE 1)))) (FILTER LAMBDA(P Y) (IF (EQ (REM (CAR Y) P) (QUOTE 0)) (FILTER P (FORCE (CDR Y))) (CONS (CAR Y) (DELAY (FILTER P (FORCE (CDR Y))))))))&