LISP - Operadores Lógicos

O LISP comum fornece três operadores lógicos: and, or, e notque opera em valores booleanos. PresumirA tem valor nulo e B tem valor 5, então -

Operador Descrição Exemplo
e Leva qualquer número de argumentos. Os argumentos são avaliados da esquerda para a direita. Se todos os argumentos forem avaliados como não nulo, o valor do último argumento será retornado. Caso contrário, nil é retornado. (e AB) retornará NIL.
ou Leva qualquer número de argumentos. Os argumentos são avaliados da esquerda para a direita até que um seja avaliado como não nulo, nesse caso o valor do argumento é retornado, caso contrário ele retornanil. (ou AB) retornará 5.
não Leva um argumento e retorna t se o argumento for avaliado como nil. (não A) retornará T.

Exemplo

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

(setq a 10)
(setq b 20)

(format t "~% A and B is ~a" (and a b))
(format t "~% A or B is ~a" (or a b))
(format t "~% not A is ~a" (not a))

(terpri)
(setq a nil)
(setq b 5)

(format t "~% A and B is ~a" (and a b))
(format t "~% A or B is ~a" (or a b))
(format t "~% not A is ~a" (not a))

(terpri)
(setq a nil)
(setq b 0)

(format t "~% A and B is ~a" (and a b))
(format t "~% A or B is ~a" (or a b))
(format t "~% not A is ~a" (not a))

(terpri)
(setq a 10)
(setq b 0)
(setq c 30)
(setq d 40)

(format t "~% Result of and operation on 10, 0, 30, 40 is ~a" (and a b c d))
(format t "~% Result of and operation on 10, 0, 30, 40 is ~a" (or a b c d))

(terpri)
(setq a 10)
(setq b 20)
(setq c nil)
(setq d 40)

(format t "~% Result of and operation on 10, 20, nil, 40 is ~a" (and a b c d))
(format t "~% Result of and operation on 10, 20, nil, 40 is ~a" (or a b c d))

Ao clicar no botão Executar ou digitar Ctrl + E, o LISP o executa imediatamente e o resultado retornado é -

A and B is 20
A or B is 10
not A is NIL

A and B is NIL
A or B is 5
not A is T

A and B is NIL
A or B is 0
not A is T

Result of and operation on 10, 0, 30, 40 is 40
Result of and operation on 10, 0, 30, 40 is 10

Result of and operation on 10, 20, nil, 40 is NIL
Result of and operation on 10, 20, nil, 40 is 10

Observe que as operações lógicas funcionam em valores booleanos e, em segundo lugar, numeric zero and NIL are not same.