LISP - Персонажи
В LISP символы представлены как объекты данных типа character.
Вы можете обозначить символьный объект, предшествующий # \ перед самим символом. Например, # \ a означает символ a.
Пробел и другие специальные символы могут быть обозначены предшествующим # \ перед именем символа. Например, # \ SPACE представляет собой пробел.
Следующий пример демонстрирует это -
пример
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(write 'a)
(terpri)
(write #\a)
(terpri)
(write-char #\a)
(terpri)
(write-char 'a)
Когда вы выполняете код, он возвращает следующий результат -
A
#\a
a
*** - WRITE-CHAR: argument A is not a character
Специальные символы
Общий LISP позволяет использовать в вашем коде следующие специальные символы. Их называют полустандартными персонажами.
- #\Backspace
- #\Tab
- #\Linefeed
- #\Page
- #\Return
- #\Rubout
Функции сравнения символов
Функции и операторы числового сравнения, такие как <и>, не работают с символами. Common LISP предоставляет два других набора функций для сравнения символов в вашем коде.
Один набор чувствителен к регистру, а другой - без учета регистра.
В следующей таблице представлены функции -
Функции с учетом регистра | Функции без учета регистра | Описание |
---|---|---|
char = | равный по символу | Проверяет, равны ли значения всех операндов или нет, если да, то условие становится истинным. |
char / = | char-not-equal | Проверяет, все ли значения операндов разные или нет, если значения не равны, условие становится истинным. |
char < | безголовый | Проверяет, монотонно ли уменьшаются значения операндов. |
символ> | Char-Morep | Проверяет, монотонно ли увеличиваются значения операндов. |
символ <= | char-not-greatp | Проверяет, больше ли значение любого левого операнда или равно значению следующего правого операнда, если да, то условие становится истинным. |
символ> = | char-not-lessp | Проверяет, меньше ли значение любого левого операнда или равно значению его правого операнда, если да, то условие становится истинным. |
пример
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
; case-sensitive comparison
(write (char= #\a #\b))
(terpri)
(write (char= #\a #\a))
(terpri)
(write (char= #\a #\A))
(terpri)
;case-insensitive comparision
(write (char-equal #\a #\A))
(terpri)
(write (char-equal #\a #\b))
(terpri)
(write (char-lessp #\a #\b #\c))
(terpri)
(write (char-greaterp #\a #\b #\c))
Когда вы выполняете код, он возвращает следующий результат -
NIL
T
NIL
T
NIL
T
NIL