Skip to content

Applying Transducers

Scheme Procedure: list-transduce xform f lst

Scheme Procedure: list-transduce xform f identity lst

Initialize the transducer xform by passing the reducer f to it. If no identity is provided, f runs without arguments to return the reducer identity. It then reduces over lst using the identity as the seed.

If one of the transducers finishes early (such as ttake or tdrop), it communicates this by returning a reduced value, which in the guile implementation is just a value wrapped in a SRFI 9 record type named “reduced”. If such a value is returned by the transducer, list-transduce must stop execution and return an unreduced value immediately.

Scheme Procedure: vector-transduce xform f vec

Scheme Procedure: vector-transduce xform f identity vec

Scheme Procedure: string-transduce xform f str

Scheme Procedure: string-transduce xform f identity str

Scheme Procedure: bytevector-u8-transduce xform f bv

Scheme Procedure: bytevector-u8-transduce xform f identity bv

Scheme Procedure: generator-transduce xform f gen

Scheme Procedure: generator-transduce xform f identity gen

Same as list-transduce, but for vectors, strings, u8-bytevectors and SRFI-158-styled generators respectively.

Scheme Procedure: port-transduce xform f reader

Scheme Procedure: port-transduce xform f reader port

Scheme Procedure: port-transduce xform f identity reader port

Same as list-transduce but for ports. Called without a port, it reduces over the results of applying reader until the EOF-object is returned, presumably to read from current-input-port. With a port reader is applied to port instead of without any arguments. If identity is provided, that is used as the initial identity in the reduction.