我正在使用clojure.contrib.sql
从SQLite数据库中获取一些记录。
(defn read-all-foo []
(with-connection *db*
(with-query-results res ["select * from foo"]
(into [] res))))
现在,我并不想在函数返回之前实现整个序列(即我希望保持懒惰),但如果我直接返回res
或将其包装在某种懒惰的包装器中(例如,我想对结果序列进行某些map
转换),SQL相关的绑定将被重置,并且连接将在我返回后关闭,所以实现序列将抛出异常。
我该如何将整个函数封装在闭包中并返回一种迭代器块(类似于C#或Python中的yield
)?
还是有其他方法可以从这个函数返回一个懒惰的序列?