3.10 Mutable Pairs and Lists
A mutable pair is like a pair created by cons, but
it supports set-mcar! and set-mcdr! mutation
operations to change the parts of the pair (like traditional Lisp and
A mutable list is analogous to a list created with pairs, but
instead created with mutable pairs.
3.10.1 Mutable Pair Constructors and Selectors
Returns #t if v is
a mutable pair, #f otherwise.
Returns a mutable pair whose first
element is a and second element is d.
Returns the first element of the
mutable pair p.
Returns the second element of the
mutable pair p.
Changes the mutable pair p so that its first element is
Changes the mutable pair p so that its second element is
3.10.2 Mutable List Functions
The bindings documented in this section are provided by the scheme/mpair library, not scheme/base or scheme.
For functions described in this section, contracts are not directly
enforced. In particular, when a mutable list is expected, supplying
any other kind of value (or mutating a value that starts as a list)
tends to produce an exception from mcar or mcdr.
Returns #t if
v is a mutable list: either the empty list, or a mutable
pair whose second element is a mutable list.
Returns a newly allocated
mutable list containing the vs as its elements.
Returns a newly allocated mutable list with the same elements as
Returns a newly allocated list with the same elements as
Returns the number of elements in mlst.
Like list-ref, but for mutable lists.
Like list-tail, but for mutable lists.
Like append, but for mutable lists.
The mappend! procedure appends the given lists by mutating
the tail of each to refer to the next, using set-mcdr!. Empty
lists are dropped; in particular, the result of calling
mappend! with one or more empty lists is the same as the
result of the call with the empty lists removed from the set of
Like reverse, but for mutable lists.
Like mreverse, but destructively reverses the list by using
all of the mutable pairs in mlst and changing them with
Like map, but for mutable lists.
Like for-each, but for mutable lists.
Like member, but for mutable lists.
Like memv, but for mutable lists.
Like memq, but for mutable lists.
Like assoc, but for mutable lists of mutable pairs.
Like assv, but for mutable lists of mutable pairs.
Like assq, but for mutable lists of mutable pairs.
Returns a procedure that returns #t when given a mutable list
for which pred returns a true value for all elements.