string-set! - modify a string element
LIBRARY
(import (rnrs mutable-strings)) ;R6RS
(import (scheme r5rs)) ;R7RS
(import (scheme base)) ;R7RS
SYNOPSIS
(string-set! string k char)
DESCRIPTION
Stores
char
in element
k
of
string.
- R6RS
-
Implementors should make
string-ref(3scm)
run in constant time, which may mean that this procedure will also run
in constant time.
- R7RS
-
There is no requirement for this procedure to execute in constant
time.
RETURN VALUES
- R6RS
-
Returns unspecified values.
- R7RS
-
Returns an unspecified value.
EXAMPLES
(define (f) (make-string 3 #\*))
(define (g) "***")
(string-set! (f) 0 #\?) => unspecified
(string-set! (g) 0 #\?) => unspecified
; should raise &assertion exception
APPLICATION USAGE
This procedure is rarely used to modify existing strings. It is
sometimes used to build up new strings, but a better option is often
to use an output string created by
open-string-output-port(3scm),
which have the benefit that the output length does not need to be
known in advance.
COMPATIBILITY
This procedure works the same everywhere. Whether a string literal is
truly immutable depends on the implementation (but they should not be
mutated either way).
ERRORS
This procedure can raise exceptions with the following condition types:
- &assertion (R6RS)
-
The wrong number of arguments was passed or an argument was outside its domain.
In particular,
k
must be a valid index of
string,
which in turn must be a mutable string.
- R7RS
-
The assertions described above are errors.
Implementations may signal an error, extend the procedure's
domain of definition to include such arguments,
or fail catastrophically.
SEE ALSO
open-string-output-port(3scm)
STANDARDS
R4RS,
IEEE Scheme,
R5RS,
R6RS,
R7RS
HISTORY
The first Scheme report to include this procedure was R2RS.
In R6RS this procedure was moved to its own library which is normally
not imported.
AUTHORS
This page is part of the
scheme-manpages
project.
It includes materials from the RnRS documents.
More information can be found at
https://github.com/schemedoc/manpages/
.
Markup created by unroff 1.0sc, March 04, 2023.