Looking for clojure Answers? Try Ask4KnowledgeBase
Looking for clojure Keywords? Try Ask4Keywords

clojureTransductores


Introducción

Los transductores son componentes componibles para procesar datos independientemente del contexto. Por lo tanto, se pueden utilizar para procesar colecciones, flujos, canales, etc. sin conocimiento de sus fuentes de entrada o receptores de salida.

La biblioteca central de Clojure se amplió en 1.7 para que la secuencia funcione como mapa, filtro, toma, etc. devuelva un transductor cuando se le llame sin una secuencia. Debido a que los transductores son funciones con contratos específicos, se pueden componer utilizando la función de comp normal.

Observaciones

Los transductores permiten controlar la pereza a medida que se consumen. Por ejemplo into está ansioso como sería de esperar, pero sequence perezosamente consumirá la secuencia a través del transductor. Sin embargo, la garantía de pereza es diferente. Se consumirá suficiente de la fuente para producir un elemento inicialmente:

(take 0 (sequence (map #(do (prn '-> %) %)) (range 5)))
;; -> 0
;; => ()

O decide si la lista está vacía:

(take 0 (sequence (comp (map #(do (prn '-> %) %)) (remove number?)) (range 5)))
;; -> 0
;; -> 1
;; -> 2
;; -> 3
;; -> 4
;; => ()

Que difiere del comportamiento habitual de la secuencia perezosa:

(take 0 (map #(do (prn '-> %) %) (range 5)))
;; => ()

Transductores Ejemplos relacionados