LISP - Operadores lógicos

Common LISP proporciona tres operadores lógicos: and, or, y notque opera con valores booleanos. AsumirA tiene valor nulo y B tiene valor 5, entonces -

Operador Descripción Ejemplo
y Requiere cualquier número de argumentos. Los argumentos se evalúan de izquierda a derecha. Si todos los argumentos se evalúan como no nulos, se devuelve el valor del último argumento. De lo contrario, se devuelve nil. (y AB) devolverá NIL.
o Requiere cualquier número de argumentos. Los argumentos se evalúan de izquierda a derecha hasta que uno se evalúa como no nulo, en tal caso se devuelve el valor del argumento; de lo contrario, devuelvenil. (o AB) devolverá 5.
no Toma un argumento y regresa t si el argumento se evalúa como nil. (no A) devolverá T.

Ejemplo

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

(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))

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es:

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

Tenga en cuenta que las operaciones lógicas funcionan con valores booleanos y, en segundo lugar, numeric zero and NIL are not same.