Учебники

ЛИСП — Персонажи

В LISP символы представлены как объекты данных типа символов.

Вы можете обозначить символьный объект, предшествующий # \ перед самим символом. Например, # \ a означает символ a.

Пробел и другие специальные символы могут быть обозначены предшествующим # \ перед именем символа. Например, # \ SPACE представляет символ пробела.

Следующий пример демонстрирует это —

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

(write 'a)
(terpri)
(write #\a)
(terpri)
(write-char #\a)
(terpri)
(write-char 'a)

Когда вы выполняете код, он возвращает следующий результат —

A
#\a
a
*** - WRITE-CHAR: argument A is not a character

Специальные символы

Common LISP позволяет использовать следующие специальные символы в вашем коде. Их называют полустандартными персонажами.

  • # \ Backspace
  • # \ Tab
  • # \ Linefeed
  • # \ Page
  • #\Вернуть
  • # \ Rubout

Функции сравнения символов

Функции и операторы числового сравнения, такие как <и>, не работают с символами. Common LISP предоставляет два других набора функций для сравнения символов в вашем коде.

Один набор чувствителен к регистру, а другой — без учета регистра.

В следующей таблице представлены функции —

Чувствительные к регистру функции Функции без учета регистра Описание
символ = углеродно равно Проверяет, равны ли все значения операндов или нет, если да, тогда условие становится истинным.
символ / = углеродно не равно Проверяет, все ли значения операндов различны или нет, если значения не равны, условие становится истинным.
символ < углеродно lessp Проверяет, монотонно ли уменьшаются значения операндов.
символ> углеродно greaterp Проверяет, монотонно ли увеличиваются значения операндов.
символ <= углеродно не-greaterp Проверяет, является ли значение любого левого операнда больше или равно значению следующего правого операнда, если да, тогда условие становится истинным.
символ> = углеродно не-lessp Проверяет, является ли значение любого левого операнда меньше или равно значению его правого операнда, если да, тогда условие становится истинным.

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

; 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))

Когда вы выполняете код, он возвращает следующий результат —