Please enable JavaScript.
Coggle requires JavaScript to display documents.
Operações sobre listas (Exemplo de consultas para o fato: cons(X, Y,…
Operações sobre listas
Estruturas em lista podem ser definidas e transformadas em Prolog de diversas maneiras diferentes
Exemplo de consultas para o fato:
cons(X, Y, [X | Y]).
?-cons(a, b, Z).
Z=[a | b]
?-cons(a, [b, c], Z).
Z=[a, b, c]
?-cons(a, [], Z).
Z=[a]
?-cons(a, X, [a, b, c]).
X=[b, c]
?-cons([a, b, c], [d, e], Z).
Z=[[a, b, c], d, e]
Ocorrência de elementos
casos verdadeiros para a operação: membro(X, L)
membro(b, [a, b, c])
membro([b,c], [a, [b, c], d])
caso falso para a operação: membro(X, L)
membro(b, [a, [b, c]])
relação membro
X é membro de L
se (1) X é a cabeça de L, ou
(2) X é membro do corpo de L.
membro(X, [X | C]).
membro(X, [Y | C]) :- membro(X, C).
membro(X, [X |
]).
membro(X, [
| C]) :- membro(X, C).
implementação de ocorrências
Listas
Listas do tipo [H|T] são estruturas muito comuns
o corpo de uma lista é sempre outra lista mesmo que seja vazia
[X | Y] ou [X | [Y | Z]] unificam com [a, b, c, d]
[X, Y, Z] não unifica com [a, b, c, d]
exemplos de consultas
?-[X | Y] = [a, b, c]. X=a Y=[b, c]
?-[X, Y, Z] = [a, b, c, d]. não
?-[X | [Y | Z]] = [a, b, c, d]. X=a Y=b Z=[c, d]