Ich arbeite gerade an einem sehr kurzen Projekt auf Prolog, und bin gerade stecken geblieben und versuche, einen "Filter", den ich erstellt habe, auf eine Liste anzuwenden. Ich habe, was man den Filter nennen könnte, aber ich kann es nicht anwenden. Es wäre besser, wenn ich folgendes illustriere:Prolog: Filtern einer Liste?
filter(A, B)
... gibt 'true' aus, wenn bestimmte Bedingungen erfüllt sind.
filterList(A, [X, Y, Z])
... gibt eine Liste, die alle Elemente aus dem zweiten Argument enthält, die die Filterausgabe falschen machen. (Wenn also der Filter (A, X) wahr ist, lautet die Ausgabe [Y, Z]).
Ich habe die "Filter" -Funktion bereit, aber jetzt muss ich es auf eine Liste anwenden, wie im zweiten Beispiel gezeigt, mit Ausnahme aller Elemente, für die der Filter True zurückgibt, wenn mit dem ersten Argument angewendet.
Also, wenn der Filter ein einfaches A == B ist, soll die Funktion A [A, B, A, C, D, A] erhalten und Ausgabe [B, C, D], alle entfernt haben die Elemente, für die der Filter gilt, offensichtlich.
Ich habe Probleme mit der grundlegenden Struktur der Funktion, also wenn jemand eine grundlegende Gliederung für eine Funktion wie diese liefern könnte, wäre es eine große Hilfe. Ich habe meine Situation so weit wie möglich vereinfacht, damit ich alles, was Sie mir anbieten können, übernehmen und für meine Bedürfnisse anpassen kann.
Vielen Dank im Voraus!
Pitty Naish schlägt in seinen Schlussfolgerungen apply/3 vor, aber ich denke, der aktuelle Weg ist Call/n zu verwenden. apply/3 ist einfach Call/3. –
Siehe für eine Diskussion, warum Naish Referenz umstritten ist: http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/naish.html –