2.3. Estructuras de Control

Los predicados son funciones que devuelven respuestas lógicas (cierto-falso), mientras que las estructuras de control controlan la ejecución del programa y permiten múltiples ramificaciones.

PREDICADOS
Permiten comprobar características relacionadas con el tipo de dato con que se está operando en cada momento. Devuelve T (cierto) si la condición se cumple y nil (falso) en caso contrario.
  • PREDICADOS GENERALES: Suelen distinguirse por terminar el nombre de la función en la letra P que significa predicado. Se utiliza la siguiente regla para decidir si la P está precedida por un guión: si el nombre del predicado se forma añadiendo la P a un nombre existente, tal como el nombre de un tipo de dato, se añade un guión sólo en el caso de que el nombre original incluya alguno (BOUNDP, LISTP, NUMBERP sin guión ó VL-FILE-DIRECTORY-P, VLAX-ERASED-P con guión). Los predicados que fueron introducidos con Visual LISP se conocen por los prefijos que se adicionan VL-, VLAX- o VLR- (VL-CONSP, VLAX-PROPERTY-AVAILABLE-P, VLR-ADDED-P). En casos como VL-CONSP se hace una excepción a la regla anterior, puesto que en realidad se está renombrando un predicado standard de Common LISP.
    PREDICADOS SOBRE ÁTOMOS Y LISTAS
  • PREDICADOS ARITMÉTICOS: Corresponden a las funciones de comparación (mayor que, menor que, igual a...).
  • OTROS PREDICADOS DEFINIDOS POR EL USUARIO: muestra de la extensibilidad de LISP.
OPERADORES LÓGICOS
Corresponden a las operaciones Booleanas básicas. LISP suministra tres operadores sobre valores Booleanos: and, or, y not. De ellos, and y or son también en cierto modo estructuras de control ya que sus argumentos son evaluados condicionalmente. Permiten agrupar las condiciones de prueba, casi siempre a partir de la utilización de predicados que se utilizan dentro de las estructuras de programación descritas más adelante.La función not tiene un sólo argumento que analizar, y es por ello una función simple.
ESTRUCTURAS CONDICIONALES
Visual LISP provee las dos estructuras de control tradicionales de LISP. La estructura condicional de más tradición en LISP es COND. Sin embargo IF resulta más simple y es directamente comparable a las estructuras condicionales de otros lenguajes de programación.