R6RS:翻訳:Standard Libraries:6.1 Mutability and equivalence of records
6.1 構造体の変更可能性と同値性
構造体型のフィールドは変更可能か変更不可能かのどちらかに指定される。対応して、変更可能なフィールドのない構造体型は変更不可能であると言われ、その型の構造体はすべて変更不可能なオブジェクトである。それ以外の構造体型はすべて変更可能であり、その型の構造体自体も変更可能である。
構造体構築子を呼び出すと毎回新たに場所を割り合てて(R6RS:翻訳:R6RS:5.10 Storage model参照)新しい構造体を返す。したがって、ために、ふたつの構造体 obj1 と obj2 について (eqv? obj1 obj2) の結果の値は、(eq? obj1 obj2) の場合と同様に以下の基準に従って決定される(R6RS:翻訳:R6RS:11.5 Equivalence predicates 参照)。
- obj1 と obj2 が異なる構造体型の場合(すなわち、構造体型記述子が eqv? でない場合)、 eqv? は #f を返す。
- obj1 と obj2 がどちらも同一の構造体型で、かつまた別個の構造体構築子の呼び出しの返り値である場合、 eqv? は #f を返す。
- obj1 と obj2 の両方が同一の構造体構築子の返り値である場合、 eqv? は #t を返す。
- obj1 と obj2 がどちらも同一の構造体型の構造体であり、その両方にあるアクセサを適用したとき、その結果が eqv? が #f を返すようなものであったとき、 eqv? は #f を返す。