Common Lisp содержит тип данных буквы.
Буквы в Common Lisp’е не совсем объекты. Нельзя положится на то, что eq будет работать с ними правильно. В частности, возможно что выражение
будет ложным, а не истинным, если значение z является буквой. ____
Обоснование: Необязательное равенство букв с помощью eq позволяет разработчикам реализации сделать оптимизации на тех архитектурах, где это удобно. Такое же правило сделано и для чисел, смотрите главу 12.
SM05 | @ | собака | SD13 | ‘ | обратная кавычка | |||
SP02 | ! | восклицательный знак | LA02 | A | прописная A | LA01 | a | маленькая a |
SP04 | " | двойная кавычка | LB02 | B | прописная B | LB01 | b | маленькая b |
SM01 | # | диез, решётка | LC02 | C | прописная C | LC01 | c | маленькая c |
SC03 | $ | знак доллара | LD02 | D | прописная D | LD01 | d | маленькая d |
SM02 | % | знак процента | LE02 | E | прописная E | LE01 | e | маленькая e |
SM03 | & | амперсанд | LF02 | F | прописная F | LF01 | f | маленькая f |
SP05 | ’ | апостроф | LG02 | G | прописная G | LG01 | g | маленькая g |
SP06 | ( | левая круглая скобка | LH02 | H | прописная H | LH01 | h | маленькая h |
SP07 | ) | права круглая скобка | LI02 | I | прописная I | LI01 | i | маленькая i |
SM04 | * | звёздочка | LJ02 | J | прописная J | LJ01 | j | маленькая j |
SA01 | + | знак плюс | LK02 | K | прописная K | LK01 | k | маленькая k |
SP08 | , | запятая | LL02 | L | прописная L | LL01 | l | маленькая l |
SP10 | - | дефис или знак минус | LM02 | M | прописная M | LM01 | m | маленькая m |
SP11 | . | точка | LN02 | N | прописная N | LN01 | n | маленькая n |
SP12 | / | слеш | LO02 | O | прописная O | LO01 | o | маленькая o |
ND10 | 0 | цифра 0 | LP02 | P | прописная P | LP01 | p | маленькая p |
ND01 | 1 | цифра 1 | LQ02 | Q | прописная Q | LQ01 | q | маленькая q |
ND02 | 2 | цифра 2 | LR02 | R | прописная R | LR01 | r | маленькая r |
ND03 | 3 | цифра 3 | LS02 | S | прописная S | LS01 | s | маленькая s |
ND04 | 4 | цифра 4 | LT02 | T | прописная T | LT01 | t | маленькая t |
ND05 | 5 | цифра 5 | LU02 | U | прописная U | LU01 | u | маленькая u |
ND06 | 6 | цифра 6 | LV02 | V | прописная V | LV01 | v | маленькая v |
ND07 | 7 | цифра 7 | LW02 | W | прописная W | LW01 | w | маленькая w |
ND08 | 8 | цифра 8 | LX02 | X | прописная X | LX01 | x | маленькая x |
ND09 | 9 | цифра 9 | LY02 | Y | прописная Y | LY01 | y | маленькая y |
SP13 | : | двоеточие | LZ02 | Z | прописная Z | LZ01 | z | маленькая z |
SP14 | ; | точка с запятой | SM06 | [ | левая квадратная скобка | SM11 | { | левая фигурная скобка |
SA03 | < | знак меньше чем | SM07 | \ | обратный слеш | SM13 | | | вертикальная черта |
SA04 | = | знак равенства | SM08 | ] | правая квадратная скобка | SM14 | } | правая фигурная скобка |
SA05 | > | знак больше чем | SD15 | ̂ | крыша | SD19 | ~ | тильда |
SP15 | ? | вопросительный знак | SP09 | _ | знак подчёркивания |
Символы в этой таблице, а также пробел и символы новой строки составляют стандартный набор букв для Common Lisp’а (тип standard-char). Метки символов и описания символов взяты из ISO 6937/2. Первый символ на метке классифицирует символ как Latin, Numeric или Special.
Для сравнения двух объектов, один из которых может быть буквой, необходимо использовать предикат eql.