;;; SEGMENT-READER with DO (defun segment-reader (stream ch n) (do ((n n (1- n)) (acc nil (push (do ((curr (read-char stream) (read-char stream)) (chars nil (push curr chars))) ((char= ch curr) (coerce (nreverse chars) 'string))) acc))) ((< n 1) (nreverse acc))))