Equality and Identity

Lispex separates atom/identity equality (eq?, eqv?), deep structural equality (equal?), and numeric equality (=).

At a glance

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

Result

OUTPUT
(#t #f #t)

Current guarantees

  • eq? and eqv? agree on atoms in this profile and compare aggregates by identity.
  • eqv? and equal? are exactness-sensitive: exact 2 and inexact 2.0 are different.
  • equal? descends through pairs, vectors, bytevectors, and strings with cycle detection.

Boundaries

  • = accepts numbers only; == and != are structural aliases.
  • Procedure equality never compares procedure bodies structurally.