Песочница

Равенство и идентичность

Lispex разделяет равенство атомов/идентичности (eq?, eqv?), глубокое структурное равенство (equal?) и числовое равенство (=).

Кратко

LISPEX
(list (= 2 2.0) (eqv? 2 2.0) (equal? (list 1 2) (list 1 2)))

Результат

OUTPUT
(#t #f #t)

Текущие гарантии

  • В этом профиле eq? и eqv? совпадают на атомах и сравнивают составные значения по идентичности.
  • eqv? и equal? чувствительны к точности: точное 2 и неточное 2.0 различны.
  • equal? рекурсивно сравнивает пары, векторы, байтовые векторы и строки с обнаружением циклов.

Границы

  • = принимает только числа; == и != — структурные псевдонимы.
  • Равенство процедур никогда не сравнивает их тела структурно.