większość wartości przekazywanych jest przez wywołania funkcji.
[rzeczywiście, bardzo to pozytywne zjawisko, gdzie zagnieżdżamy 15 stopni struktur nawiasowych zamiast używać zmiennych, ale wykładowca ma rację...]
Przykład w Prolog deklaratywnego wyznaczania konkatenacji dwóch list:
<następnik implikacji>
{zachodzi związek KONKATENACJA między obiektami ListaA, ListaB, ListaC}
JEŚLI
<poprzednik implikacji>
{ListaA=[] ORAZ ListaB=ListaC}
LUB
ListaA=[Pierwszy | Reszta]
ORAZ ListaC=[Pierwszy|NowaReszta]
ORAZ
{zachodzi związek KONKATENACJA między obiektami Reszta, ListaB, Nowa Reszta}
Prolog dopuszcza alternatywę w poprzedniku, ale bardziej "poprawnie" jest używać po prostu koniunkcji.
Na slajdach z wykładu mamy zapis w Prologu. Najpierw "beznadziejny i mało efektywny". Dalej mamy optymalizację tego zapisu i działania.
Co się dzieje dla postaci uporządkowanej i nieuporządkowanej?
?_conc([a,b], [c,d], L). - tutaj dla pierwszej postaci programu mamy uzgadnianie wielu zmiennych. W postaci skompresowanej / zoptymalizowanej, mamy za to jedno uzgodnienie. Nie ma sensu przyrównywanie do prawej strony w przesłance tak, jak w wersji niezoptymalizowanej. Złe przyzwyczejenie z czasów programowania proceduralnego. Możemy od razu wielkości przyrównywane po prawej stronie wstawić jako argumenty tworzonej funkcji.
Rysunek przedstawia budowanie wyniku z postaci zoptymalizowanej: <rys3>
5. Wykład 5:
Środowisko interpretacyjne Prologu:
Programy napisane w Prologu są standardowo interpretowane. Można je kompilować. Użytkownik ma dostęp do kompilatora i interpretera wywołań. Użytkownik podaje cel. Procedura może być skompilowana lub nieskompilowana. Użytkownik nie widzi wewnętrznej reprezentacji. <rysl>
Możemy ogólnie mówić w takim razie o interpretacji (z punktu widzenia użytkownika). Wywołania są interpretowane, natomiast procedury mogą być skompilowane (wywołanie) lub nie (interpretacja).
Środowisko zalecane przez Parewicza: SWI PROLOG (http://www.swi-proloa.ora). Opracowane na wydziale nauk społecznych, katedra psychologii. Do badań modeli psychologicznych. Procedura conc jest inaczej zbudowana, należy ją przesłaniać.
Do przykładu przeszukiwania grafu:
Pojawiło się opisane całe drzewo poszukiwań w materiałach wykładowych. Założenia dotyczące grafu: acykliczny, skierowany.