Manual/es/prototipos-y-objetos-prolog

Prototipos y objetos Prolog

En esta página se describen los prototipos implementados para modelar los elementos de Prolog y sus métodos disponibles.

Variables

El prototipo pl.type.Var se utiliza para representar las variables lógicas de los programas Prolog. El constructor recibe como argumento una cadena de carácteres que representa el identificador de la variable.

Términos

El prototipo pl.type.Term se utiliza para representar los átomos y términos compuestos de los programas Prolog. El constructor recibe como argumentos una cadena de carácteres que representa el identificador del término y, opcionalmente, una lista de objetos Prolog que representan los parámetros del término (si es compuesto).

Las listas están compuestas por términos ./2 que reciben una cabeza y una cola, y por el término []/0 que se utiliza como lista vacía. Por ejemplo, la lista [1,2,3] es analizada como '.'(1,'.'(2,'.'(3,[]))).

Números

El prototipo pl.type.Num se utiliza para representar los números de los programas Prolog. El constructor recibe como argumentos un número que representa el valor y, opcionalmente, un valor lógico que indica si se trata de un valor real (true) o entero (false).

Los números enteros están limitados al mayor entero que JavaScript puede representar con seguridad, 253 - 1 = 9007199254740991 (véase [Number.MAX_SAFE_INTEGER] de JavaScript). Cualquier operación que exceda este valor devolverá un error de evaluación por desbordamiento.

Substituciones

El prototipo pl.type.Substitution se utiliza para representar las substituciones en el proceso de resolución, así como respuesta a los programas Prolog. El constructor recibe como argumento, opcionalmente, un objeto JavaScript que relaciona variables con objetos. Por ejemplo, new pl.type.Substitution({"X":new pl.type.Term("a"), "Y":new.pl.type.Num(2)}); es una substitución donde la variable X cambia por a y la variable Y cambia por 2.

Estados

El prototipo pl.type.State se utiliza para representar los puntos de elección en el proceso de resolución. El constructor recibe como argumentos un objetivo (un término Prolog) y una substitución. Cuando se llega a la cláusula vacía, el objetivo se representa con el valor null.

Reglas

El prototipo pl.type.Rule se utiliza para representar las reglas de los programas Prolog. El constructor recibe como argumentos la cabeza y el cuerpo de la regla. Si la regla es un hecho, el cuerpo vacío se representa con el valor null.

Sesiones

El prototipo pl.type.Session se utiliza para representar las sesiones. El constructor recibe como argumento un entero que representa el límite de pasos de resolución que se pueden dar antes de encontrar una respuesta.

Nota: Para crear una nueva sesión se provee del método pl.create, no se recomienda utilizar el prototipo directamente (véase [Un tutorial sencillo] #Sesiones del manual de Tau Prolog).

Módulos

El prototipo pl.type.Module se utiliza para representar módulos de Prolog. El constructor recibe como argumentos una cadena de carácteres que representa el identificador del módulo y un objeto que contiene las reglas del mismo. Este objeto tiene como índices el indicador de las reglas, y como valores las listas de reglas.

Errores

ISO Prolog proporciona un mecanismo de manejo de excepciones, basado en las construcciones de control incorporadas catch/3 y throw/1. Cuando ocurre un error, el objetivo actual es reemplazado por un objetivo de la forma throw(error(Error_term, Implementation_defined_term)). Si el error no es tratado, se obtiene como respuesta el error contenido como parámetro del término throw/1.