To support pure functional programming, it seems to me that there ought to
be two new procedures:
(string-set string i char) -> string
(string-fill s char [start end]) -> string
which would be like their "!" brethren, except they return new strings
instead of altering their arguments.
-dan