Hey, I see that the style of your code is fairly unorthodox. I'd suggest you to read the following chapters of SICP, if you haven't already: Section 3.5 (Streams), which introduces the notion of streams, or lazy lists (that can be infinite), with the most amazing example of Erastostenes' sieve implementation, as well as sections 4.1 and 4.3 of Chapter 4 (Metalinguistic abstraction). The first one presents the notion of "meta-circular evaluator", which is then used to implement "non-deterministic evaluator", which allows to express certain problems extremely elegantly. Simultaneously, the book shows many examples of the finest programming style in Scheme. I think you might find it quite entertaining and useful.
Best regards, M.