Hey Brian,
The fact that a reducible (as I have implemented it in the reducible-stream library) will fully realize itself if it is used as a sequence is a drawback that I'm not happy with. In the back of my mind I believe there may be a way around it, but I'm not sure, and it is still a topic of further thought/research for me. However, I think it can easily be avoided.
The point of using a reducible instead of a sequence is to invert the control so that the collection is in charge of processing itself. When you use a reducible as a sequence you are processing the collection externally, making the collection responsible only for doling itself out one item at a time, which it cannot do if it must also manage the scope for some resource (like a connection) that must be closed.
I would suggest that you have more processing that needs to be pushed into the reduction process. So, instead of getting a database result set, processing it in some way, and then trying to pass it as a sequence into Ring (I'm not sure if this is exactly your problem, but I think it is representative?), where Ring will want to consume that sequence, which will trigger it to fully realize in memory---instead push the work that Ring would be doing into the reduction process. So, reduce over the result set with an output stream (or one end of a piped output stream), and in the reduction process write to the stream. Ring takes the other end of the pipe and consumes the stream to produce its result.
A reducible is a delayed computation, and with transducers or by other means you can layer more delayed computation onto the reducible. As soon as you fire the reducible it will produce its entire result, whether the firing is because of a call to `reduce` or `seq`. A reducible is like a spring with potential energy built in, and when it is sprung it springs. A lazy sequence is like a wheel, if you apply external force to it, it will turn, but otherwise it is inert. Probably a terrible analogy, but that's the best I can come up with. :)
I hope that's helpful.
Paul
http://www.realworldclojure.com/http://paul.stadig.name/@pjstadig