Prolog
-
Hallo,
kann mir jemand von euch zum Thema Prolog weiterhelfen ? Im folgenden Quelltext:
weiblich(s) weiblich(nanna). weiblich(fulla). weiblich(laufey).
würde ich mir gerne als Ergebnis alle weiblichen Personen ausgeben lassen. Über das Goal weiblich(X) bekommt man aber lediglich den ersten Treffer zurück, danach bricht das Programm ab. Kennt jemand einen Befehl der den Abbruch übergeht und alle Treffer anzeigt ?
Grüße
Alex
-
Hm also so einen Befehl gibt es *meines Wissens* nicht. Ich habe SWI-Prolog benutzt, und da war das kein Problem. Da zeigt er z.B. bei der Abfrage weiblich(X) auch erst einen Treffer an, aber wenn du dann ";" (=oder) drückst dann wird dir der nächste Treffer angezeigt, wenn du dann wieder ";" drückst kommt der nächste T reffer usw. bis schließlich alle Möglichkeiten erschöpft sind.
-
Vielleicht hilft da "setof/3" oder "bagof/3" weiter: http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_12.html
(Meine PROLOG-Zeit ist auch etwas her, also 'tschuldigung, wenn das nicht weiterhilft.)
-
demuelli schrieb:
Kennt jemand einen Befehl der den Abbruch übergeht und alle Treffer anzeigt ?
Aber sicher doch:
zeige_weiblich :- weiblich(X), print(X), nl, fail; true.
-
Funktioniert einwandfrei, danke minhen.
-
Kein Problem. Jederzeit wieder. Hier sind eh viel zu wenig Prolog-Fragen
(soll heißen: gebt mir mehr Prologzeug zum Beantworten :D)