Common Lisp tem caracteres como outras linguagens de programação. Caracteres são objetos que representam um item em uma quantidade de texto (por exemplo, uma string ou um fluxo de texto).
Caracteres podem ser convertidos de e para inteiros. (Mas eles não são inteiros, são um tipo distinto.)
Caracteres são representados como #\ seguido do seu nome.
O 'nome' de caracteres comuns como 'A' ou 'b' ou '9' ou '!' é simplesmente esse: então #\A, #\b, #\9 e #\!.
Alguns caracteres não gráficos, como espaço ou nova linha, têm nomes como #\Space e #\Newline.
O padrão exige apenas que uma implementação tenha 96 caracteres (caracteres alfabéticos latinos maiúsculos e minúsculos (A-Za-z), os dígitos (0-9), espaço (#\Space), nova linha (#\Newline) e pontuação (por exemplo, !$"'(),_-./:;?+<=>#%&*@[\]{|}`^~)
Porém, a maioria das implementações oferece mais do que isso, incluindo implementações que fornecem todos os caracteres Unicode.
Caracteres podem ser comparados quanto à igualdade com char= ou char-equal (este último não diferencia maiúsculas de minúsculas).
Caracteres podem ser ordenados com funções como char<, char>, char<=, char>= e suas versões que não diferenciam maiúsculas de minúsculas, char-lessp e char-greaterp.
Os caracteres podem ser classificados em diferentes tipos: gráficos, alfabéticos, alfanuméricos, dígito, maiúsculo ou minúsculo.
Um caractere pode ser de mais de um tipo, como um caractere alfabético maiúsculo.
Existem predicados para cada um desses tipos: graphic-char-p, alpha-char-p, alphanumericp, digit-char-p, upper-case-p e lower-case-p.
Alguns caracteres podem ser maiúsculos ou minúsculos e podem ser convertidos entre si com char-upcase e char-downcase.
Lewis, um jovem Lisp Alien, precisa fazer um trabalho no projeto de alfabetos Humanos e pede sua ajuda para programar algumas funções de que vai precisar.
Lewis vai precisar de uma função para comparar dois caracteres, determinando se o primeiro é maior que, menor que ou igual ao segundo.
Escreva uma função compare-chars que recebe dois caracteres e resulta em :greater-than, :less-than ou :equal-to, conforme o caso.
A função deve comparar diferenciando maiúsculas de minúsculas.
Lewis precisa saber se um caractere é "grande" (um caractere maiúsculo), "pequeno" (um caractere minúsculo) ou "sem tamanho", se não for nenhum dos dois.
Escreva uma função size-of-char que resulta em :big, :small ou :no-size, dependendo do "tamanho" do caractere:
Lewis pode precisar transformar um caractere grande em pequeno, ou um pequeno em grande.
Escreva uma função change-size-of-char que recebe dois parâmetros: um caractere e um tamanho desejado (:big ou :small).
Ela deve resultar no caractere correspondente, com o tamanho correto.
Lewis não vai precisar saber apenas qual é o "tamanho" do caractere, mas também o "tipo" dele.
Escreva uma função type-of-char que resulta em :alpha se o caractere for alfabético, :numeric se for numérico, :space se for um espaço, :newline se for uma quebra de linha e :unknown caso contrário
Crie sua conta no Exercism para aprender e dominar Common Lisp com 27 conceitos92 exercícios e mentoria humana de verdade, tudo de graça.