# chickadee » transducers » zip-range

##### Identifier search
zip-range numeric-rangeprocedure

A transducer that interleaves a range in between items from the current transduction. If there aren't enough elements in either the current transduction or the range being zipped then the transducer exits early.

```
(import transducers)

(transduce list-fold
(zip-range (range 0 4))
(collect-list)
(list 'a 'b 'c))

; => ((a . 0) (b . 1) (c . 2))```

Admittedly this is very much like enumerate. However, note that enumerate will have the following differences:

1. enumerate pairs the number and transduced item in the reverse order (e.g. (0 . a) instead of (a . 0))
2. enumerate only terminates when the rest of the transduction does.

Of course, if one feels strongly about the enumerate ordering they are more than welcome to do the following:

```
(import transducers)

(transduce list-fold
(zip-range (counter 0))
(collect-list)
(list 'a 'b 'c))

; => ((a . 0) (b . 1) (c . 2))```

Which is equivalent to enumerate except with reversed ordering (since counter is infinite and does not exhaust).