Согласно R5RS минимальные спецификации для реализации eqv?
(при передаче двух аргументов obj1
и obj2
) для оценки #t
:
obj1
и obj2
оба #t
или оба #f
.(то, как два логических литерала оценивают одно и то же значение, зависит от реализации). obj1
и obj2
оба являются символами и
(string=?
(symbol->string obj1)
(symbol->string obj2)) =)
=> #t
obj1
и obj2
оба числа, численно равны (=
) и либо точны, либо неточны. obj1
и obj2
оба символа иодин и тот же символ в соответствии с процедурой char=?
. - и
obj1
и obj2
- пустой список. obj1
и obj2
- пары, векторы или строкикоторые обозначают те же места в магазине (см. раздел 3.4 R5RS). obj1
и obj2
являются процедурами, теги местоположения которых равны (выражение A lambda
равно концептуально помечен местом хранения. Что это означает, зависит от реализации Схемы. Также см. раздел 4.1.4 R5RS).
equal?
может быть реализован в терминах eqv?
, поскольку он рекурсивно сравниваетсодержимое пар, векторов и строк, применяя eqv?
к другому объектутакие действия, как цифры и символы.