- reader-fold f sentinel vecprocedure
Fold operation over reader procedures / generators. Can be used with transduce in the following way:
(import (chicken port) transducers) (with-input-from-string "abcd" (lambda () (transduce reader-fold values (collect-list) read-char))) ; => (#\a #\b #\c #\d)
To note: (take n) is not greedy / over-eager, so it is possible to read from a reader / generator and continue to read from the same port afterwards:
(import (chicken port) transducers test) (with-input-from-string "abcd" (lambda () (test "List is (a b)" (list #\a #\b) (transduce reader-fold (take 2) (collect-list) read-char)) (test "Reader has not yet read #\c" #\c (read-char)))