Вы используете любой из eq?
, eqv?
или equal?
.
Все три можно использовать с любыми объектами без ошибок (в отличие от =
, который может использоваться только с числами). Однако результат будет отличаться в зависимости от того, какие типы вы передаете. Но если вы знаете, что сравниваете символы, все они будут иметь одинаковый результат.
Если вы занимались программированием на Java, eqv?
- это ==
, а equal?
- .equals()
. Проще говоря, eqv?
делает сравнение идентификаторов, а equal?
делает сравнение значений.
(И eq?
выполняет прямое сравнение указателей. Для некоторых реализаций он может быть быстрее, чем eqv?
, с пониманием, что иногда он возвращает false для равных чисел или символов. Для других реализаций он точно идентичен на eqv?
. В большинстве случаев для надежности вы должны использовать eqv?
для сравнения идентификаторов и забыть, что eq?
существует.)