Funções
[edição não verificada] | [edição não verificada] |
m (texto copiado da Wikipedia) |
(Funções) |
||
=== 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]]
|