- Fråga: Vi undrar om antagandet att listorna inte innehåller dubletter gäller för
hela uppgiften, eller bara för unionpredikatet?
Svar: Det gäller hela uppgiften.
- Fråga: Är det t.ex. meningen att man
ska kunna konstruera alla möjliga frågor till en regel? Ett exempel:
?- snitt([b,c], X, [b]).
Här används ju snitt på ett tveksamt sätt. Ska denna fråga vara
definierad, och är i så fall svaret X=[b] ?
Svar: Det räcker med att predikaten fungerar för de fall där
de två första mängderna är givna (t.ex. snitt([a],[b],L)).
- Fråga: Får man ALLTID förutsätta att listorna inte innehåller dubletter?
Ett test med mitt predikat "delmängd" ger nämligen följande
lite otrevliga resultat...
delmängd(A,[a,b]).
A = [] ? ;
A = [a] ? ;
A = [a] ? ;
A = [a,a] ? ;
A = [a,a] ? ;
A = [a,a,a] ?
osv.
Dessutom:
| ?- delmängd([a],A).
A = [a|_A] ? ;
A = [a,_A|_B] ? ;
A = [a,_A,_B|_C] ? ;
A = [a,_A,_B,_C|_D] ?
osv.
Hmmm, är det OK att det funkar på det sättet?
Svar: Det är ok! Predikaten behöver endast fungera på det
sätt som anges i exemplen.
- Fråga: Jag sitter nu och föröker testa min inlämningsuppgift i AI, det är bara
ett problem: jag får ingenting att fungera! Enligt Sicstus så finns det
inget predikat som heter member, not, osv. Ska man inkludera någon fil
någonstans? I så fall vilken?
Svar: Du skall själv deklarera alla predikat som inte
är inbyggda (t.ex. member, append etc.). I SICStus skriver
man \+ istället för not.