Prolog: Wann ist false auch eine Lösung?

1 Antwort

Kann es sein, dass du false und fail immer als false ansiehst?
In Prolog gibt es einen Unterschied zwischen dem Prüfen auf "false" und dem "fail".

  • "false" bedeutet, dass das Programm explizit festgestellt hat, dass die Anfrage nicht erfüllt werden kann. Dies kann beispielsweise der Fall sein, wenn eine Regel explizit definiert ist und die Anfrage nicht erfüllt werden kann.
  • "fail" bedeutet, dass Prolog versucht hat, eine Lösung zu finden, aber keine weiteren passenden Ergebnisse gefunden hat. Dies bedeutet jedoch nicht unbedingt, dass die Anfrage grundsätzlich nicht erfüllbar ist.

Erstes Beispiel: Wenn Prolog keine passende Lösung findet, wird "fail" zurückgegeben.
Zweites Beispiel: Hier wird die Regel rekursiv aufgerufen, um die Liste zu durchlaufen. Da Prolog keine passende Liste finden kann, die sich an sich selbst anhängt und [] ergibt, wird "false" zurückgegeben.


java56 
Fragesteller
 03.03.2024, 12:47

Wenn er im ersten Bsp beide Lösungen gefunden hat sollte der doch auch noch ausgeben false? Da er wie in Bsp 2 keine weiteren Belegungen finden kann. Aber das tut der nicht. Wo besteht da der Unterschied?

0