cl: Equality Predicates
3.2 Equality Predicates
=======================
This package defines the Common Lisp predicate ‘cl-equalp’.
-- Function: cl-equalp a b
This function is a more flexible version of ‘equal’. In
particular, it compares strings case-insensitively, and it compares
numbers without regard to type (so that ‘(cl-equalp 3 3.0)’ is
true). Vectors and conses are compared recursively. All other
objects are compared as if by ‘equal’.
This function differs from Common Lisp ‘equalp’ in several
respects. First, Common Lisp’s ‘equalp’ also compares _characters_
case-insensitively, which would be impractical in this package
since Emacs does not distinguish between integers and characters.
In keeping with the idea that strings are less vector-like in Emacs
Lisp, this package’s ‘cl-equalp’ also will not compare strings
against vectors of integers.
Also note that the Common Lisp functions ‘member’ and ‘assoc’ use
‘eql’ to compare elements, whereas Emacs Lisp follows the MacLisp
tradition and uses ‘equal’ for these two functions. The functions
‘cl-member’ and ‘cl-assoc’ use ‘eql’, as in Common Lisp. The standard
Emacs Lisp functions ‘memq’ and ‘assq’ use ‘eq’, and the standard
‘memql’ uses ‘eql’.