LISP - Postacie
W LISP znaki są reprezentowane jako obiekty danych typu character.
Możesz oznaczyć obiekt znakowy poprzedzający # \ przed samym znakiem. Na przykład # \ a oznacza znak a.
Spację i inne znaki specjalne można oznaczyć, poprzedzając # \ przed nazwą znaku. Na przykład # \ SPACJA reprezentuje znak spacji.
Poniższy przykład demonstruje to -
Przykład
Utwórz nowy plik kodu źródłowego o nazwie main.lisp i wpisz w nim następujący kod.
(write 'a)
(terpri)
(write #\a)
(terpri)
(write-char #\a)
(terpri)
(write-char 'a)
Po wykonaniu kodu zwraca następujący wynik -
A
#\a
a
*** - WRITE-CHAR: argument A is not a character
Znaki specjalne
Common LISP pozwala na używanie w kodzie następujących znaków specjalnych. Nazywa się je postaciami półstandardowymi.
- #\Backspace
- #\Tab
- #\Linefeed
- #\Page
- #\Return
- #\Rubout
Funkcje porównywania znaków
Liczbowe funkcje i operatory porównania, takie jak <i>, nie działają na znakach. Common LISP udostępnia dwa inne zestawy funkcji do porównywania znaków w kodzie.
W jednym zestawie rozróżniana jest wielkość liter, a w drugim wielkość liter.
Poniższa tabela przedstawia funkcje -
Funkcje uwzględniające wielkość liter | Funkcje bez rozróżniania wielkości liter | Opis |
---|---|---|
char = | znak równości | Sprawdza, czy wszystkie wartości operandów są równe, czy nie. Jeśli tak, warunek staje się prawdziwy. |
char / = | char-not-equal | Sprawdza, czy wartości argumentów są różne, czy nie, jeśli wartości nie są równe, warunek staje się prawdziwy. |
char < | char-lessp | Sprawdza, czy wartości operandów maleją monotonicznie. |
char> | char-Greaterp | Sprawdza, czy wartości operandów rosną monotonicznie. |
char <= | char-not-Greaterp | Sprawdza, czy wartość dowolnego lewego operandu jest większa lub równa wartości następnego prawego operandu, jeśli tak, warunek staje się prawdziwy. |
char> = | char-not-lessp | Sprawdza, czy wartość dowolnego lewego operandu jest mniejsza lub równa wartości jego prawego operandu, jeśli tak, warunek staje się prawdziwy. |
Przykład
Utwórz nowy plik kodu źródłowego o nazwie main.lisp i wpisz w nim następujący kod.
; 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))
Po wykonaniu kodu zwraca następujący wynik -
NIL
T
NIL
T
NIL
T
NIL