Eine Bestellung in Prädikatenauflösung bringen
Schau dir die folgenden Ziele an (ich benutze swi-prolog mit clpfd von Markus Triska):
result(Input,Result) :-
Input #> 10,
Result=decline.
result(Input,Result) :-
Input in 0..20,
Result=offer.
Eine mögliche Abfrage sieht folgendermaßen aus:
?- result(15,B).
B = decline ;
B = offer.
Ich möchte eine Bestellung oder eine Art Lösungspriorität hinzufügen. Wenn "ablehnen" ist eine gültige Antwort fürInput=15
Dann sollte das zweite Tor nicht mehr in Betracht gezogen werden, so dass nurB=decline
ist eine lösung aber nichtB=offer
.
Ich weiß, dass ich eine hinzufügen könnte!/0
aber dann würde der umgekehrte Weg nicht funktionieren. Gib mir alle möglichen Antworten für dieses Prädikat.
In Anbetracht dieses Beispiels aResult=offer
sollte nur wahr sein fürInput 0..10
, weil sonst das höhere vorherige Ablehnungsziel ausgelöst werden sollte.
Denke ich zu zwingend, wenn ich versuche, eine Ordnung innerhalb von Prädikaten zu betrachten?