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 mutable pair (like traditional Lisp and Scheme pairs).
A mutable list is analogous to a list created with pairs, but instead created with mutable pairs.
A mutable pair is not a pair; they are completely separate datatypes. Similarly, a mutable list is not a list, except that the empty list is also the empty mutable list. Instead of programming with mutable pairs and mutable lists, data structures such as pairs, lists, and hash tables are practically always better choices.
A mutable list can be used as a single-valued sequence (see Sequences). The elements of the mutable list serve as elements of the sequence. See also in-mlist.
3.10.1 Mutable Pair Constructors and Selectors
3.10.2 Mutable List Functions
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 mutable list) tends to produce an exception from mcar or mcdr.
procedure
(list->mlist lst) → mlist?
lst : list?
procedure
(mlist->list mlst) → list?
mlst : mlist?
procedure
(mlength mlst) → exact-nonnegative-integer?
mlst : mlist?
procedure
mlst : mlist? pos : exact-nonnegative-integer?
procedure
(mlist-tail mlst pos) → any/c
mlst : mlist? pos : exact-nonnegative-integer?
procedure
proc : procedure? mlst : mlist?
procedure
proc : procedure? mlst : mlist?