Ho alcune strutture con sequenze pigro nidificate che leggono dai file. Quando sto testando mi piacerebbe essere in grado di avvolgerli in una versione ricorsiva di doall per essere sicuri che tutti i dati vengano estratti dai file prima del i file vengano chiusi.ricorsivo (doall) in clojure
6
A
risposta
5
(defn doall-recur [s]
(if (seq? s)
(doall (map doall-recur
s))
s))
(use 'clojure.contrib.duck-streams)
(with-open [r1 (reader "test1.txt")
r2 (reader "test2.txt")]
(doall-recur (list (line-seq r2) (line-seq r1))))
uscita:
(("This is test2.txt" "") ("This is test1.txt" ""))
5
(defn doall* [s] (dorun (tree-seq seq? seq s)) s)
0
questo ha lavorato per me in una prova di unità
(use 'clojure.walk)
(postwalk identity nested-lazy-thing)
Problemi correlati
- 1. Clojure Editor scritto in Clojure
- 2. Come ottenere un deftype ricorsivo
- 3. TreeView ricorsivo in ASP.NET
- 4. ricorsivo selezionare in MySQL
- 5. Clojure mappatura parallela e sequenze infinite
- 6. Clojure style function "threading" in Python
- 7. ricorsivo Fibonacci
- 8. terminare chiamato in modo ricorsivo
- 9. SED ricorsivo in file specifici
- 10. cefalea ricorsivo
- 11. Due funzioni che si richiamano in modo ricorsivo
- 12. Il programma Clojure non si chiude al termine dell'ultima istruzione?
- 13. clojure: (a fn Coll) vs (a # (a fn% &) coll)
- 14. È "per" non effettivamente pigro in clojure?
- 15. test Clojure in Maven
- 16. Debug in Clojure?
- 17. Attori in Clojure
- 18. Ritenzione testa in Clojure
- 19. Consumo WSDL in Clojure
- 20. contatore sincronizzato in clojure
- 21. Introspection in Clojure
- 22. Mutating XML in Clojure
- 23. Ricerca XML in Clojure
- 24. Coda immutabile in Clojure
- 25. Eccezioni personalizzate in Clojure?
- 26. L'override 'richiede' in Clojure?
- 27. Cronologia in Clojure REPL
- 28. Documentazione Clojure in Emacs
- 29. Condivisione strutturale in Clojure
- 30. Iterator blocks in Clojure?
Dovremmo assumere 's' ha bisogno di essere una versione citata del codice a cui si applica 'doall *'? – matanster
No. Perché pensi così? – cgrand