|  | ANSI Common Lisp  13 Characters  13.2 Dictionary of Characters 
 
| 13.2.5  char=, char/=, char<, char>, char<=, char>=,           char-equal, char-not-equal, char-lessp, char-greaterp, char-not-greaterp,          char-not-lessp | Function |  
 Syntax:
| char= &rest characters+ |  generalized-boolean |  | char/= &rest characters+ |  generalized-boolean |  | char< &rest characters+ |  generalized-boolean |  | char> &rest characters+ |  generalized-boolean |  | char<= &rest characters+ |  generalized-boolean |  | char>= &rest characters+ |  generalized-boolean |  |
 | char-equal &rest characters+ |  generalized-boolean |  | char-not-equal &rest characters+ |  generalized-boolean |  | char-lessp &rest characters+ |  generalized-boolean |  | char-greaterp &rest characters+ |  generalized-boolean |  | char-not-greaterp &rest characters+ |  generalized-boolean |  | char-not-lessp &rest characters+ |  generalized-boolean |  
Arguments and Values:
character - a character.
generalized-boolean - a generalized boolean.
 
Description:
These predicates compare characters.
char= returns true if all characters are the same;
otherwise, it returns false.
If two characters differ 
in any implementation-defined attributes,
then they are not char=.
 
char/= returns true if all characters are different;
otherwise, it returns false.
 
char< returns true if the characters are monotonically increasing; 
otherwise, it returns false.
If two characters 
have identical implementation-defined attributes, 
then their ordering by char< is 
consistent with the numerical ordering by the predicate < on their codes.
 
char> returns true if the characters are monotonically decreasing; 
otherwise, it returns false.
If two characters have 
identical implementation-defined attributes,
then their ordering by char> is 
consistent with the numerical ordering by the predicate > on their codes. 
 
char<= returns true 
if the characters are monotonically nondecreasing; 
otherwise, it returns false.
If two characters have
identical implementation-defined attributes,
then their ordering by char<= is
consistent with the numerical ordering by the predicate <= on their codes. 
 
char>= returns true 
if the characters are monotonically nonincreasing; 
otherwise, it returns false.
If two characters have
identical implementation-defined attributes,
then their ordering by char>= is 
consistent with the numerical ordering by the predicate >= on their codes. 
 
    char-equal,
    char-not-equal,
    char-lessp,
    char-greaterp,
    char-not-greaterp,
and char-not-lessp
are similar to 
    char=,
    char/=,
    char<,
    char>,
    char<=,
    char>=,
respectively,
except that they ignore differences in case and
might have an implementation-defined behavior 
for non-simple characters.
For example, an implementation might define that 
char-equal, etc. ignore certain 
implementation-defined attributes.
The effect, if any, 
of each implementation-defined attribute
upon these functions must be specified as part of the definition of that attribute.
 
Examples:
 (char= #\d #\d)  true
 (char= #\A #\a)  false
 (char= #\d #\x)  false
 (char= #\d #\D)  false
 (char/= #\d #\d)  false
 (char/= #\d #\x)  true
 (char/= #\d #\D)  true
 (char= #\d #\d #\d #\d)  true
 (char/= #\d #\d #\d #\d)  false
 (char= #\d #\d #\x #\d)  false
 (char/= #\d #\d #\x #\d)  false
 (char= #\d #\y #\x #\c)  false
 (char/= #\d #\y #\x #\c)  true
 (char= #\d #\c #\d)  false
 (char/= #\d #\c #\d)  false
 (char< #\d #\x)  true
 (char<= #\d #\x)  true
 (char< #\d #\d)  false
 (char<= #\d #\d)  true
 (char< #\a #\e #\y #\z)  true
 (char<= #\a #\e #\y #\z)  true
 (char< #\a #\e #\e #\y)  false
 (char<= #\a #\e #\e #\y)  true
 (char> #\e #\d)  true
 (char>= #\e #\d)  true
 (char> #\d #\c #\b #\a)  true
 (char>= #\d #\c #\b #\a)  true
 (char> #\d #\d #\c #\a)  false
 (char>= #\d #\d #\c #\a)  true
 (char> #\e #\d #\b #\c #\a)  false
 (char>= #\e #\d #\b #\c #\a)  false
 (char> #\z #\A)  implementation-dependent
 (char> #\Z #\a)  implementation-dependent
 (char-equal #\A #\a)  true
 (stable-sort (list #\b #\A #\B #\a #\c #\C) #'char-lessp)  (#\A #\a #\b #\B #\c #\C)
 (stable-sort (list #\b #\A #\B #\a #\c #\C) #'char<)  (#\A #\B #\C #\a #\b #\c) ;Implementation A  (#\a #\b #\c #\A #\B #\C) ;Implementation B  (#\a #\A #\b #\B #\c #\C) ;Implementation C  (#\A #\a #\B #\b #\C #\c) ;Implementation D  (#\A #\B #\a #\b #\C #\c) ;Implementation E 
Exceptional Situations:
Should signal an error of type program-error if at least one character is not supplied.
See Also:
Section 2.1 Character Syntax,
Section 13.1.10 Documentation of Implementation-Defined Scripts
Notes:
If characters differ in their code attribute 
or any implementation-defined attribute,
they are considered to be different by char=.
There is no requirement that (eq c1 c2) be true merely because
(char= c1 c2) is true.  While eq can distinguish two 
characters
that char= does not, it is distinguishing them not
as characters, but in some sense on the basis of a lower level
implementation characteristic.
If (eq c1 c2) is true,
then (char= c1 c2) is also true.
eql and equal
compare characters in the same
way that char= does.
 
The manner in which case is used by 
     char-equal,
     char-not-equal,
     char-lessp,
     char-greaterp,
     char-not-greaterp,
 and char-not-lessp
implies an ordering for standard characters such that
A=a, B=b, and so on, up to Z=z, and furthermore either
9<A or Z<0.
 
Allegro CL Implementation Details:
 None. |