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