LISP - Personajes

En LISP, los caracteres se representan como objetos de datos de tipo character.

Puede indicar un objeto de carácter que precede a # \ antes del carácter en sí. Por ejemplo, # \ a significa el carácter a.

El espacio y otros caracteres especiales se pueden indicar precediendo # \ antes del nombre del carácter. Por ejemplo, # \ SPACE representa el carácter de espacio.

El siguiente ejemplo demuestra esto:

Ejemplo

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

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

Cuando ejecuta el código, devuelve el siguiente resultado:

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

Caracteres especiales

Common LISP permite usar los siguientes caracteres especiales en su código. Se les llama caracteres semi-estándar.

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

Funciones de comparación de caracteres

Las funciones y operadores de comparación numérica, como <y> no funcionan con caracteres. Common LISP proporciona otros dos conjuntos de funciones para comparar caracteres en su código.

Un conjunto distingue entre mayúsculas y minúsculas y el otro no distingue entre mayúsculas y minúsculas.

La siguiente tabla proporciona las funciones:

Funciones sensibles a mayúsculas y minúsculas Funciones que no distinguen entre mayúsculas y minúsculas Descripción
char = char-igual Comprueba si los valores de los operandos son todos iguales o no, si es así, la condición se convierte en verdadera.
char / = char-no-igual Comprueba si los valores de los operandos son todos diferentes o no, si los valores no son iguales, la condición se convierte en verdadera.
char < char-lessp Comprueba si los valores de los operandos disminuyen monótonamente.
char> char-mayorp Comprueba si los valores de los operandos aumentan monótonamente.
char <= char-not-mayorp Comprueba si el valor de cualquier operando izquierdo es mayor o igual que el valor del siguiente operando derecho; si es así, la condición se convierte en verdadera.
char> = char-not-lessp Comprueba si el valor de cualquier operando de la izquierda es menor o igual que el valor de su operando de la derecha, si es así, la condición se convierte en verdadera.

Ejemplo

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

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

Cuando ejecuta el código, devuelve el siguiente resultado:

NIL
T
NIL
T
NIL
T
NIL