chickadee » srfi-1 » take!

take! x iprocedure
drop-right! flist iprocedure

take! and drop-right! are "linear-update" variants of take and drop-right: the procedure is allowed, but not required, to alter the argument list to produce the result.

If X is circular, take! may return a shorter-than-expected list:

(take! (circular-list 1 3 5) 8) => (1 3)
(take! (circular-list 1 3 5) 8) => (1 3 5 1 3 5 1 3)