Tecnología

Inicio

Cómo crear un predicado Prolog Anexar

Prolog contiene un predicado incorporado llamado "añadir" que anexa dos listas, pero escribir su propio le ayudará a obtener una comprensión de cómo el lenguaje utiliza a juego y la unificación de realizar cálculos.

En un lenguaje de programación procedimental e imperativo (como C ++ o Java), que iba a escribir un algoritmo que se repite más de dos listas y los añade juntos. En Prolog, que hace todo lo contrario; se escribe un conjunto de reglas que definen lo que la lista final debe ser similar, y el intérprete aplica esas reglas para calcular el resultado.

Al igual que el predicado "append" incorporada, definirá un predicado "appendLists" que tiene tres argumentos: el primero en la lista, la segunda lista, y el resultado de añadir la primera y segunda listas juntas.

En Prolog, vacíos entre corchetes "[]" (sin comillas) denota la lista vacía, y la notación "[Primera | Resto]" (sin comillas) representa una lista cuyo primer elemento es "primero" y cuyos elementos restantes son una lista denominado "Resto".

Instrucciones

1 Definir una regla para el caso base de la recursividad, la cual establece que cualquier lista añadiendo a la lista de resultados vacíos en la lista original. Escriba la siguiente regla en su intérprete de Prolog, sin las comillas rodean, y presione Enter: ". AppendLists ([], Lista, Lista)"

2 Definir una regla para el caso recursivo escribiendo la siguiente regla en su intérprete, sin las comillas rodean, y pulsando Intro: "appendLists ([Primera | Rest1], Lista, [Primera | Rest2]): - appendLists (Rest1, Lista, Rest2). " Esta norma establece que (leer el lado derecho primero), si se agrega "Rest1" y resultados "lista" en "Rest2", entonces también es cierto que añadiendo "Cabeza", seguido de resultados "lista" en "Rest1" y "Cabeza" seguido de "Rest2".

3 Pruebe su predicado con un ejemplo. Escriba la siguiente consulta en intérprete, sin comillas, y pulse Intro: "appendLists ([a, b], [c, d], Resultado)." El intérprete debe devolver la lista anexa en la variable "Resultado" y de impresión "Resultado = [a, b, c, d]" sin consolidar.