eq?

Die Funktion eq? (mit den Synonymen equal? und =) entscheidet, ob ihre beiden Argumente gleich sind.

Zahlen und Zeichenketten sind gleich, wenn sie die gleiche Zahl oder Zeichenfolge repräsentieren. Symbole sind gleich, wenn sie den gleichen Namen haben. Für Listen und eingefrorene Instanzen (siehe freeze) erfolgt der Vergleich anhand der Struktur: sie sind gleich, wenn ihre Komponenten gleich sind.

Arrays, nicht eingefrorene Instanzen, Macros, Funktionen, Methoden und Klassen werden nur als gleich angesehen, wenn es sich um identische Objekte handelt.

> (eq? 1 2)
nil

> (eq? (list 1 2 3) (quote (1 2 3)))
t


Die Funktionsweise von eq? folgt dem Vorschlag von Henry G. Baker aus "Equal Rights for Functional Objects or, The More Things Change, The More They Are the Same", nach dem unveränderliche Objekte anhand ihrer Komponenten und veränderliche Objekte anhand ihrer Adressen verglichen werden.