Translate

jueves, 14 de noviembre de 2019

Listas en prolog

Seguimos con Prolog

Una lista es una secuencia de elementos tales como:
[clara,tomas,jose,isabel]

La representación interna de las listas en PROLOG es con árboles binarios, donde la rama de la izquierda es el primer elemento –o cabeza– de la lista y la rama de la derecha es el resto –o cola– de la lista.

[]. Es una lista vacía. Y es el final de la lista (igual que funcional)


En el ejemplo anterior, la cabeza será clara y la cola
[tomas,jose,isabel].

El último elemento siempre es la lista vacía ([]).

La cabeza y la cola de una lista se pueden separar con el símbolo “|”.

[a,b,c]
[a|[b,c]]
[a,b|[c]]
[a,b,c|[]]
[a|X],[Y|[b,c]]

?- [a,b,c] == [a,b|[c]].
true.

El orden de los elementos en la lista importa y un elemento se puede repetir en una lista.

Supongamos que queremos determinar si un elemento es miembro de una lista. Los siguientes serían ejemplos del funcionamiento de la relación “miembro”.

miembro(b,[a,b,c]). %PROLOG respondería sí.
miembro(b,[a,[b,c]]). %PROLOG respondería no.
miembro([b,c],[a,[b,c]]). %PROLOG respondería sí.

Siendo miembro :

miembro(X,[X|_]).
miembro(X,[_|R]):-miembro(X,R).