Being of an evil mind tonight, I created the following debacle for your… entertainment:
#!r6rs
(import
(rnrs base (6))
(rnrs lists (6))
(rnrs r5rs (6))
(rnrs io simple (6)))
(define (factor? x y)
(= 0 (modulo x y)))
(define (series)
(letrec ((next
(lambda (n)
(cons n (delay (next (+ n 1)))))))
(next 1)))
(define (show x)
(display x)
#t)
(define-syntax exclusive-or
(syntax-rules ()
((_ x y)
(let ((a x)
(b y))
(and (or a b) (not (and a b)))))))
(define (fizzbuzz)
(let I-am-off ((to-infinity-and-beyond (series)))
(let ((n (car to-infinity-and-beyond)))
(if (exclusive-or
(and (factor? n 3) (show 'fizz))
(and (factor? n 5) (show 'buzz)))
'()
(if (not (factor? n 15))
(display n)))
(display #\space)
(I-am-off (force (cdr to-infinity-and-beyond))))))
(fizzbuzz)