Prolog/Listas: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Albmont (discussão | contribs)
m texto copiado da Wikipedia
 
Albmont (discussão | contribs)
Funções
Linha 20:
=== Strings ===
Strings são normalmente escritas como uma seqüência de caracteres entre aspas. É comum serem representadas internamente como listas de códigos de caracteres, em geral utilizando a codificação local ou [[Unicode]], se o sistema dá suporte a Unicode. O ISO Prolog também permite que strings sejam representadas por uma lista de átomos com um único caractere.
 
== Funções da biblioteca padrão que manipulam listas ==
Existem, na biblioteca padrão, várias funções que manipulam listas. A maioria destas funções são facilmente implementadas em prolog, usando-se [[Prolog/Recursão|recursão]].
 
=== Member ===
[[Prolog/Unificação|Unifica]] um elemento a uma lista, quando o elemento pertence à lista.
 
Por exemplo,
 
member(1, [1,2,3]).
 
retorna ''Yes''. Por outro lado, podemos chamar:
 
member(X, [1,2,3]).
 
o que faz ''X'' assumir, sucessivamente, os valores 1, 2 e 3.
 
Também pode-se fazer:
 
member(2, [1,X,Y]).
 
que faz ''X = 2'' e, sem seguida, ''Y = 2''.
 
Até mesmo
 
member(1, X).
 
é possível, unificando ''X'' com uma lista de cabeça ''1'' e corpo indefinido (como ''[1 | L1]''), em seguida a uma lista do tipo ''[Y1, 1 | L2]'', em seguida a ''[Y1, Y2, 1 | L3]'' - esta é uma recursão que não termina.
 
=== Append ===
 
O comando
 
append(L1, L2, L3).
 
unifica a lista ''L3'' com a concatenação de ''L1'' e ''L2''. Esta função pode ser chamada passando-se ''L3'', ou passando-se ''L1'' e ''L2'', ou qualquer outra combinação.
 
Por exemplo:
 
append(X, Y, [1]).
 
retorna duas soluções, a primeira com ''X = []'' e ''Y = [1]'', e a segunda com ''X = [1]'' e ''Y = []''.
 
Um exemplo mais complicado:
 
append(X, [a, b, Y], [Z, b, c| W]).
 
irá unificar ''X = []'', ''Y = c'', ''Z = a'', ''W = []'', em seguida ''X = [Z, b, c]'', ''W = [a, b, Y]'', em seguida ''X = [Z, b, c, U]'', ''W = [U, a, b, Y]'', e em seguida todas as listas no formato acima, em que ''U'' vai sendo substituído por listas de 2, 3, etc elementos.
 
=== Reverse ===
 
reverse(X, Y).
 
Unifica a lista ''X'' com a reversa da lista ''Y''. Novamente, existe liberdade em escolher quem será input e quem será output:
 
reverse(X, [1, 2, 3]).
reverse([a, b, c], Y).
 
=== Length ===
O número de elementos de uma lista.
 
length(X, 0).
 
Unifica ''X = []''.
 
length([a | X], 2).
 
Unifica ''X'' com uma lista de um elemento.
 
[[Categoria:Prolog|Listas]]
 
[[en:Prolog/Lists]]