Von hier und den Folien meines Lehrers
eq testet, ob seine Argumente (dargestellt durch denselben Teil des Computerspeichers) dasselbe Symbol sind oder nicht.
Zum Beispiel:
(Gleichung 'A' B) NIL
(Gleichung 'RAM' RAM) T
(Gleichung (Nachteile 'a' b) (Nachteile a 'b')); Dies liegt daran, dass für beide Nachteile unterschiedliche Aufrufe getätigt werden, sodass ihnen offensichtlich unterschiedliche Speicherblöcke zugewiesen werden
eql testet zuerst, ob seine Argumente EQ erfüllen. Wenn nicht, versucht es zu sehen, ob es sich um Zahlen desselben Typs und derselben Werte handelt.
Zum Beispiel:
(Gleichung 4 4.0) NIL
(Gleichung 4 4) T.
Beachten Sie nun einen Unterschied :
(Gleichung 4.0 4.0) NIL; Abhängig von der Plattform, wie in der ersten (akzeptierten) Antwort beschrieben
(Gleichung 4.0 4.0) T; Typ und Wert der Argumente sind gleich
Bei einigen Implementierungen (Gleichung 4.0 4.0) wird möglicherweise true zurückgegeben, da im Standard nicht festgelegt ist, ob eine Implementierung nur eine Kopie von Zahlen und Zeichen im Speicher behalten soll, wie dies bei Symbolen der Fall ist. Als Faustregel wird dies nicht verwendet Gleichung für Zahlen und Zeichen , es sei denn, Sie wissen wirklich, was Sie tun.
gleich ist eine "vernünftigere" Vergleichsfunktion. Als Faustregel können Sie sich vorstellen, dass zwei Objekte gleich aussehen (strukturell ähnlich oder isomorph). Dies ist wahrscheinlich der Operator, den Sie für die allgemeine Gleichstellung verwenden möchten. Es verhält sich wie eql für Zahlen, Zeichen und Symbole, aber für Listen (conses) und Strings sagt es, ob ihre Elemente
Zum Beispiel:
(gleich 4 4) T
(gleich (+ 2 2) 4) T.
Beachten Sie nun einen Unterschied
(Gleichung (Nachteile 'a' b) (Nachteile 'a' b)) NIL
(gleich (Nachteile 'a' b) (Nachteile 'a' b)) T; Gleich gilt normalerweise für Dinge, die gleich drucken
Equalp ist wie gleich, nur fortgeschrittener. Der Vergleich von Zahlen ist typunempfindlich. Beim Vergleich von Zeichen und Zeichenfolgen wird die Groß- und Kleinschreibung nicht berücksichtigt.
Zum Beispiel:
(gleich (Nachteile 'a' b) (Nachteile 'a' b)) T; gleich wie gleich
Beachten Sie nun einen Unterschied
gleich (4 4,0) NIL
gleich (4 4,0) T; Als Equalp behandelt Zahlen Typ unempfindlich