; two easy tasks (define range (case-lambda ((stop) (range 0 stop (if (negative? stop) -1 1))) ((start stop) (range start stop (if (< start stop) 1 -1))) ((start stop step) (let ((le? (if (negative? step) >= <=))) (let loop ((x start) (xs (list))) (if (le? stop x) (reverse xs) (loop (+ x step) (cons x xs)))))) (else (error 'range "too many arguments")))) (display (filter (lambda (n) (and (zero? (modulo n 13)) (zero? (modulo n 17)))) (range 500))) (newline) (define (f n) (let* ((m (+ #e1e9 7)) (n (modulo n m))) (modulo (* n (+ n 1) 1/2) m))) (display (f 1234567)) (newline)