LISP - Personagens

No LISP, os caracteres são representados como objetos de dados do tipo character.

Você pode denotar um objeto de caractere precedendo # \ antes do próprio caractere. Por exemplo, # \ a significa o caractere a.

Espaço e outros caracteres especiais podem ser indicados precedendo # \ antes do nome do caractere. Por exemplo, # \ SPACE representa o caractere de espaço.

O exemplo a seguir demonstra isso -

Exemplo

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

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

Quando você executa o código, ele retorna o seguinte resultado -

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

Caracteres especiais

O LISP comum permite o uso dos seguintes caracteres especiais em seu código. Eles são chamados de caracteres semipadrão.

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

Funções de comparação de caracteres

Funções e operadores de comparação numérica, como <e> não funcionam em caracteres. LISP comum fornece outros dois conjuntos de funções para comparar caracteres em seu código.

Um conjunto diferencia maiúsculas de minúsculas e o outro não diferencia maiúsculas de minúsculas.

A tabela a seguir fornece as funções -

Funções que diferenciam maiúsculas de minúsculas Funções que não diferenciam maiúsculas de minúsculas Descrição
char = char-equal Verifica se os valores dos operandos são todos iguais ou não, se sim a condição torna-se verdadeira.
char / = char-not-equal Verifica se os valores dos operandos são todos diferentes ou não, se os valores não são iguais a condição torna-se verdadeira.
char < char-lessp Verifica se os valores dos operandos estão diminuindo monotonicamente.
char> char-maiorp Verifica se os valores dos operandos estão aumentando monotonicamente.
char <= char-not-higherp Verifica se o valor de algum operando à esquerda é maior ou igual ao valor do próximo operando à direita. Se sim, a condição se torna verdadeira.
char> = char-not-lessp Verifica se o valor de algum operando esquerdo é menor ou igual ao valor de seu operando direito; em caso afirmativo, a condição torna-se verdadeira.

Exemplo

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

; 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 você executa o código, ele retorna o seguinte resultado -

NIL
T
NIL
T
NIL
T
NIL