Przykładowe zastosowanie operacji CONC w kontekście programu - finał split:
final_split(Listl, LA, LB, List2) conc(LA,LB,Listl), check_list(LB, List2).
Rozdzielamy listą w taki sposób, że
6. Wykład 6 - nie byłem... (cholerne PKP...)
7. Wykład 7:
Deterministyczne i niedeterministyczne usuwanie elementu:
Wersja funkcji usuwającej deterministyczna - usuwa pierwsze wystąpienie i tylko pierwsze wystąpienie usuwanego obiektu.
Wersja niedeterministyczna - obydwie reguły mogą zostać wykonane równorzędnie, brak warunku różności.
Usunięcie czegoś z listy pustej daje listę pustą. Usunięcie w przypadku deterministycznym nieistniejącego obiektu powoduje zwrócenie listy bez zmian.
W przypadku niedeterministycznym - zwrócenie listy bez zmian (?) ... Rozrysować sobie drzewka...
Deterministyczne i niedeterministyczne usuwanie wszystkich elemntów:
Czy usunięcie warunku w przypadk usuwania wszystkiego zmieni coś? Co? Czy to będzie poprawne?
Dodawanie elementu przez usuwanie:
Argument 2 jest nieukonkretniony. Czyli oczekujemy listy, która po usunięciu argl dałaby arg3. Dostajemy w ten sposób, przy nieukonkretnionym L, wszystkie listy, które po usunięciu a dałyby [b,e,c]
?_deletel(a, L, [b,e,c]);
Modyfikacja member:
memberl(X,[X|J).
memberl(X,[Y|Rest]) memberl(X,Rest). - wprowadzony niedeterminizm, po nawrotach analizuje dalej i wyszukuje
Wywołanie ?_member(X, [a,b,c]). zwróci nam po kolei wszystkie elementy listy...
search_list(Listl, List2) memberl(X,Listl), member(X,List2). Co to robi... ? Sprawdza, czy kolejne elementy Listl należą do List2.
znajdz_zma(Lista_zam, Klient) memberl(Zamowienie, Listazam), zam_klient(Zamowienie, Klient).
zam_klient (zamowienie(Numer, Data, Wartość, Klient), Klient).
Generowanie szablonów:
/= - to nie jest różność, tylko "nieuzgadnialne z..." !!!