Estoy usando clojure.contrib.sql
para obtener algunos registros de una base de datos SQLite.bloques iterador en Clojure?
(defn read-all-foo []
(with-connection *db*
(with-query-results res ["select * from foo"]
(into [] res))))
Ahora, yo realmente no quiere darse cuenta de toda la secuencia antes de volver de la función (es decir, quiero mantenerlo perezoso), pero si vuelvo res
directa o envolverla algún tipo de envoltorio perezoso (por ejemplo, quiero hacer una determinada transformación de map
en la secuencia de resultados), los enlaces relacionados con SQL se restablecerán y la conexión se cerrará después de que regrese, por lo que al realizar la secuencia arrojaré una excepción.
¿Cómo puedo encerrar toda la función en un cierre y devolver un tipo de bloque iterador (como yield
en C# o Python)?
¿O existe otra forma de devolver una secuencia diferida de esta función?
Eso es lo que quiero hacer, pero quiero que se maneje automágicamente con un cierre de bloque iterador (u otra forma de cierre que implemente una interfaz seq perezosa). –