Funciones predicado
Me imagino (no tengo mis apuntes a mano) que se llaman así porque sirven para obtener información de los predicados, o sea, de sus argumentos.
Creo que esta es la última lección que necesitamos antes de empezar a resolver problemas. Bueno, esto no es del todo exacto. Necesitamos también funciones para el control de flujo (for, while y esas cosas).
¿Qué devuelven las funciones predicado?
Devuelven el símbolo t para indicar que se cumple la condición (t de true).
Devuelven el símbolo NIL para indicar que la condición no se cumple. NIL es un símbolo y una lista a la vez: la lista vacía.
NIL = ()
Por eso (rest ‘(a)) devuelve NIL, o sea la lista vacía.
Por cierto, la mayoría de las funciones predicado terminan con la letra P (de predicado).
Función SYMBOLP
Sirve para saber si el valor del argumento es un símbolo o no.
(symbolp NIL)
> t
(symbolp t)
> t
(symbolp (first '(a b)))
> t
Función LISTP
Indica si el valor del argumento es una lista.
(listp ‘(a b c))
> t
(listp NIL)
> t
Función NUMBERP
(numberp 5)
> t
Función ATOM
Los símbolos y números son átomos.
(atom 'a)
> t
(atom 5)
> t
(atom '(a))
> NIL
Función ZEROP
Indica si el valor del argumento es cero o no.
Función MINUSP
Para saber si el valor del argumento es negativo.
Función PLUSP
Para saber si el valor del argumento es positivo.
Función EVENP
Nos dice si es par.
Función ODDP
Para saber si es impar.
Función "<" (menor)
(<>
> NIL
(<>
> t
Función ">" (mayor)
(> 7 6 5)
> t
Función "=" (igualdad)
(= 4 4)
> t
(= 4 4.0)
> t
(= 4 (first '(4 2)))
> t
Función EQ
Similar a la función "igualdad", pero los valores de los argumentos tienen que ser símbolos.
(eq 'a (first '(a b)))
> t
(eq 'a (rest '(a b)))
> ERROR.
Función EQL
Similar a los 2 anteriores, pero los valores de los argumentos tienen que ser números o símbolos.
(eql 'a (first '(a)))
> t
(eql 4 4.0)
> NIL por ser diferentes números (uno entero y otro decimal).
Función EQUAL
Sirve para números, símbolos y listas. En el caso de los números el comportamiento es igual que en la función EQL.
(equal '(a b 4) (list 'a 'b 4.0))
> NIL
Bueno, ya está bien por hoy.
Saludos...
miércoles, noviembre 14, 2007
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario