EQL: “Conceptually Equal”
EQ is strictly stronger than EQL: any two objects that are EQ are also EQL, but the converse is not true.
X and Y are EQL if they are of the same value and type
- two symbols: (EQL ’X ’X) => T
- two characters: (EQL #\a #\a) => T
- two numbers of the same type: (EQL 3.2 3.2) => T
But does not apply to sequences or mixed types
- (EQL 3 3.0) => NIL
- (EQL “a” “a”) => NIL
- (EQL ’(X Y) ’(X Y)) => NIL
EQL is the default equality test for many built-in functions