Mutable strings

The string-set! procedure provided by the (rnrs mutable-strings (6))library allows mutating the characters of a string in-place.

(string-set! string k char)    procedure 

k must be a valid index of string. The string-set! procedure stores char in element

k of string and returns unspecified values.

Passing an immutable string to string-set! should cause an exception with condition type &assertion to be raised.

(define (f) (make-string 3 #\*))
(define (g) "***")
(string-set! (f) 0 #\?)          ⇒  
(string-set! (g) 0 #\?)          ⇒  unspecified
             ; should raise  &assertion exception
(string-set! (symbol->string ’immutable)
             #\?)          ⇒  unspecified
             ; should raise  &assertion exception

Note:   Implementors are encouraged to make string-set! run in constant time.

(string-fill! string char)    procedure 

Stores char in every element of the given string and returns unspecified values.