調べてみると Racket ではペアへの破壊的な代入を許さないらしい。
代わりに mcons というデータ構造が用意されていてこちらは set-mcar! や set-mcdr! といった手続きで代入ができる。
R5RS に基づいて書かれた Scheme のプログラムを動かすにはペアを扱う手続きを mcons を使うものに定義し直す必要があるが、すでにそれをするパッケージが用意されている。
> (require r5rs)
とすると、set-car! や set-cdr! が定義され、cons で作ったペアに再代入できる。
]]>