/************************************************************************

concatena1 : concatena listas de symbol

posibles entradas : concatena1(L,L1,L2):

a.- instanciar (darle valores) L y L1 dando como resultado L2 que

es la uni¢n o concatenaci¢n de L con L1;

b.- instanciar L y L2 dando como resultado L1 que equivale a

encontrar la lista de simbolos (L1, no esta instanciada) que

concatenada con L de como resultado L2 (que ya esta

instanciado);

c.- instanciar L1 y L2 dando como resultado L (que esta

instanciada que equivale a encontrar la lista de simbolos (L)

que concatenada con L1 de como resultado L2 (que ya esta

instanciado);

Concatena2 : concatena lista de enteros

posibles entradas : igual a concatena1, pero en lugar de lista de simbolos

trabaja con lista de enteros.

Para seguir el programa se ha colocado un trace que permite seguir la

ejecuci¢n clausula por clausula, para ir avanzando s¢lo hay que presionar

F10, si deseas verlo continuado, sin esta pausa, basta con eliminar el

trace.

Inteligencia Artificial

Gonzalo Villarreal Farah

Para Turbo Prolog 2.0 de Borland

****************************************************************************/

domains

lista_symbol=symbol*

lista_numeros=integer*

predicates

concatena1(lista_symbol,lista_symbol,lista_symbol)

concatena2(lista_numeros,lista_numeros,lista_numeros)

clauses

concatena1([],L,L).

concatena1([X|Y],L,[X|Z]):-

concatena1(Y,L,Z).

concatena2([],L,L).

concatena2([X|Y],L,[X|Z]):-

concatena2(Y,L,Z).