Prolog - powtórzenia wyników.

0
biega(marek).
plywa(damian).
biega(marcin).
plywa(marcin).
sportowiec(X):- biega(X);plywa(X).

Cześć wywołujący zapytanie sportowiec(X) próbuje wyciągnąć wszystkie obiekty które albo pływaja albo biegają. Nie rozumiem dlaczego obiekt który jednocześnie pływa i biega się duplikuje.

1

Bo wpierw zostanie dopasowany jako biegający a potem jako pływający. Prolog nie robi deduplikacji.

0

Jest jakiś sposób aby temu zaradzić?
W jaki sposób mogę zapytać kim jest marek?

1

Musisz użyć setof/3 lub bagof/3. Tu masz przykład na Simpsonach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1