laupäev, 19. oktoober 2013

Ahvid, vol 2.

Noja ma siin siis maadlen jätkuvalt oma programmeerimiskeeltega...Kohati kammib ikka väga ära, näiteks üritasin konkreetselt tund aega aru saada, miks järgnev Prologi predikaat töötab.

on_ahvid( [ ]).
on_ahvid( [ H | T ] ) :-
member( H, [ ahvike,ahvipapa, ahvimamma, mankiboi ]),
on_ahvid(T).

See ei ole loogiline! Kogu see keel on üles ehitatud loogikavalemitele, käsud pole ette antud vaid tuleb ise defineerida; kust kohast ta võtab siin arusaamise, et 
?- on_ahvid([ahvike,ahvipapa])
true  
?- on_ahvid([papagoi, elevant])
false

Õpikunäide oli numbritega, enne aru ei saanud kui käsud eestikeelsete vastetega ja numbrid ahvidega asendasin. Sest siis selgus: member, mis kontrollib kas antud entiteet on teisel positsioonil asuvas listis, on üks neid väheseid eeldefineeritud käske, mis on Prologi sisse ehitatud, ja sellepärast ta töötab - mitte et õpik seda poole sõnagagi mainiks. Faaaaaaaaaa....