2015-12-25 15 views
7

Jestem nowy w Prolog. Próbuję tylko prostych przykładów do nauki. Mam ten plik .pl z tych linii:Dlaczego SWI-Prolog daje mi tylko pierwszą odpowiedź?

parent(pam,bob). 
parent(tom,bob). 
parent(tom,lio). 
parent(bob,ann). 
parent(bob,pat). 
parent(pat,jim). 

Po konsultacji i badań, pokazuje tylko pierwszą odpowiedź. Na przykład:

5 ?- parent(X,Y). 
X = pam, 
Y = bob . 

Czy to nie powinien dać wszystkie kombinacje, które spełniają relację parent?

Czy ktoś ma pojęcie o problemie?

+1

Po pierwszym wyświetleniu wyników nie należy wciskać Enter, należy użyć spacji zamiast: –

+0

perfect. Dzięki za pomoc. –

+1

Dodałem to jako odpowiedź, ponieważ mam wrażenie, że nie jesteś jedyną osobą, która w tym uczestniczy. –

Odpowiedz

8

nie bij wejść po pierwszym przedstawia wyniki, użyj spacji zamiast

  • [Enter] zatrzymuje wykonanie nawet jeśli backtracking nie jest jeszcze ukończony
  • [Spacebar] lub [;] nadal z wycofywania z ostatniego wyniku do następny wynik lub false, jeśli nie pozostały żadne inne wyniki.
+1

Czy możesz wyjaśnić, jaka jest różnica między przestrzenią a wejściem dla przyszłych czytelników? –

+0

Myślałem, że jest już jasne, ale jeśli nie, mam nadzieję, że to zrobi. Dzięki. –

Powiązane problemy