As for a (slightly) different algorithm: If the vector to be mapped over is so large that the stack would overflow in Marc's/Gambit's implementation of `vector-map` (causing pressure on the GC), one could preallocate the result vector as in the naive algorithm and copy data chunk-wise from the stack into the vector. After each chunk, the written part of the result vector is write-protected (using, e.g., `mprotect`). When a protection violation is signaled, the algorithm enters a more complicated/possibly slower code path. This would give the best of both worlds and would also address John's concerns.