Reducers
Scheme Procedure: rcons
a simple consing reducer. When called without values, it returns its identity, '(). With one value, which will be a list, it reverses the list (using reverse!). When called with two values, it conses the second value to the first.
emacs-lisp
(list-transduce (tmap (lambda (x) (+ x 1)) rcons (list 0 1 2 3))
⇒ (1 2 3 4)Scheme Procedure: reverse-rcons
same as rcons, but leaves the values in their reversed order.
emacs-lisp
(list-transduce (tmap (lambda (x) (+ x 1))) reverse-rcons (list 0 1 2 3))
⇒ (4 3 2 1)Scheme Procedure: rany pred?
The reducer version of any. Returns (reduced (pred? value)) if any (pred? value) returns non-#f. The identity is #f.
emacs-lisp
(list-transduce (tmap (lambda (x) (+ x 1))) (rany odd?) (list 1 3 5))
⇒ #f
(list-transduce (tmap (lambda (x) (+ x 1))) (rany odd?) (list 1 3 4 5))
⇒ #tScheme Procedure: revery pred?
The reducer version of every. Stops the transduction and returns (reduced #f) if any (pred? value) returns #f. If every (pred? value) returns true, it returns the result of the last invocation of (pred? value). The identity is #t.
emacs-lisp
(list-transduce
(tmap (lambda (x) (+ x 1)))
(revery (lambda (v) (if (odd? v) v #f)))
(list 2 4 6))
⇒ 7
(list-transduce (tmap (lambda (x) (+ x 1)) (revery odd?) (list 2 4 5 6))
⇒ #fScheme Procedure: rcount
A simple counting reducer. Counts the values that pass through the transduction.
emacs-lisp
(list-transduce (tfilter odd?) rcount (list 1 2 3 4)) ⇒ 2.