LISP - Personaggi

In LISP, i caratteri sono rappresentati come oggetti dati di tipo character.

Puoi indicare un oggetto carattere che precede # \ prima del carattere stesso. Ad esempio, # \ a indica il carattere a.

Lo spazio e altri caratteri speciali possono essere indicati facendo precedere # \ prima del nome del carattere. Ad esempio, # \ SPACE rappresenta il carattere spazio.

Il seguente esempio lo dimostra:

Esempio

Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.

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

Quando esegui il codice, restituisce il seguente risultato:

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

Personaggi speciali

Common LISP consente di utilizzare i seguenti caratteri speciali nel codice. Sono chiamati i caratteri semi-standard.

  • #\Backspace
  • #\Tab
  • #\Linefeed
  • #\Page
  • #\Return
  • #\Rubout

Funzioni di confronto dei caratteri

Le funzioni e gli operatori di confronto numerico, come, <e> non funzionano sui caratteri. Common LISP fornisce altri due set di funzioni per confrontare i caratteri nel codice.

Un set distingue tra maiuscole e minuscole e l'altro.

La tabella seguente fornisce le funzioni:

Funzioni sensibili al maiuscolo / minuscolo Funzioni senza distinzione tra maiuscole e minuscole Descrizione
char = char-equal Controlla se i valori degli operandi sono tutti uguali o meno, in caso affermativo la condizione diventa vera.
char / = char-not-equal Controlla se i valori degli operandi sono tutti diversi o meno, se i valori non sono uguali la condizione diventa vera.
char < char-lessp Controlla se i valori degli operandi stanno diminuendo in modo monotono.
char> carattere maggiore p Controlla se i valori degli operandi aumentano in modo monotono.
char <= char-not-greaterp Controlla se il valore di un qualsiasi operando sinistro è maggiore o uguale al valore dell'operando destro successivo, in caso affermativo la condizione diventa vera.
char> = char-not-lessp Controlla se il valore di un qualsiasi operando sinistro è minore o uguale al valore del suo operando destro, in caso affermativo la condizione diventa vera.

Esempio

Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.

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

Quando esegui il codice, restituisce il seguente risultato:

NIL
T
NIL
T
NIL
T
NIL