LISP: consp ou listp?

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 conspe listppredicados 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