Mutable pairs

The presence of mutable pairs causes numerous problems:

However, removing mutable pairs from the language entirely would have caused significant compatibility problems for existing code. As a compromise, the set-car! and set-cdr! procedures were moved to a separate library. This facilitates statically determining if a program ever mutates pairs, encourages writing programs that do not mutate pairs, and may help deprecating or removing mutable pairs in the future.