Ao explorar os predicados integrados, os LISPers iniciantes (em ANSI Common LISP esp.) Muitas vezes terão a seguinte dúvida:
Consp e listp não são iguais?
Resposta curta: Não
Por que é que?
Bem, porque nem toda lista é uma cons-cell!
O que? Você pode explicar, por favor?
Certo.
Observe que NIL
é uma lista, também denotada por ()
.
Mas (o mais importante!) NIL
Não é uma célula contrária .
Lá!
Espero que você tenha ‘entendido’ a diferença sutil entre consp
e listp
predicados no LISP.
Agora deve estar claro o que os seguintes snippets de código produzem (por favor, tente!):
(consp NIL)
Resultado: NIL
(= falso)
enquanto que,
(listp NIL)
Resultado: T
(= verdadeiro)
Nota: esta dica profissional fornece uma explicação muito compacta. Para um artigo mais detalhado, consulte o meu artigo detalhado aqui