Liste rekursiv aus Fakten der WB erstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Liste rekursiv aus Fakten der WB erstellen

    Liste rekursiv aus Fakten der WB erstellen

    Mit dem folgenden Konstrukt lese ich die Argumente aller maennlich/1 Prädikate meiner WB ein und schreibe sie in eine Liste:

    [code:1]maennlich(paul).
    maennlich(fritz).
    maennlich(karl).
    maennlich(karl).

    hinzuV(X, L, [X|L]).
    liste([]).
    liste(L1) :- maennlich(X), hinzuV(X, L, L1), del(X), liste(L).

    del(X):- retract(maennlich(X)), !. % loescht den ersten maennlich-Fakt aus der WB, ohne Cut werden alle gelöscht
    [/code:1]

    Wenn ich nun nach liste(X) frage gibt er mir 5 Lösungen aus, von der leeren Liste bis hin zum richtigen Ergebnis. Ich brauch ja aber nur das letzte Ergebnis. Gibt es eine Möglichkeit nur das letzte auszugeben bzw. eine elegantere Lösung, die nur das letzte Ergebnis produziert. Mit dem Cut komm ich hier nicht weiter, das hab ich schon ausprobiert.
    Was wir wissen ist ein Tropfen, was wir nicht wissen ein Ozean.

    www.bussgeldkataloge.eu - Die Seite für Autofahrer