Ich habe gerade eine Verbindung zu SWI Prolog hergestellt und möchte Fakten manipulieren. z.B. ziehe sie zurück und setze sie durch.Prolog C# Schnittstelle aus Datei zurückziehen
Ich habe eine Funktion wie folgt aus:
String[] param = { "-q" };
PlEngine.Initialize(param);
PlQuery.PlCall("consult('tablets.pl').");
PlQuery.PlCall("assert(tablet(4,newatomic)).");
PlQuery.PlCall("tell('tablets.pl'), listing(tablet/2), told.");
PlQuery.PlCall("retractall(tablet/2).");
PlQuery.PlCall("assert(tablet(1,n1ewatomic)).");
PlQuery.PlCall("assert(tablet(2,n2ewatomic)).");
PlQuery.PlCall("tell('tablets.pl'), listing(tablet/2), told.");
Wie Sie diese Funktion sehen, es funktioniert für Behauptung wie erwartet, aber nicht für einzufahren. Die Sache ist, dass ich alle Tabletten Fakten (sie sind dynamisch) aus der Datei vor dem Einfügen der nächsten löschen möchten. PlQuery.PlCall("retractall(tablet/2).");
Diese Abfrage muss alle Datensätze löschen, die sich in der Datei befinden. und auch, wie man eine Tatsache zum Beispiel tablet(4,newatomic)
löscht, aber keine anderen Fakten zu löschen.
Die resultierende Datei nach der Ausführung ist:
:- dynamic tablet/2.
tablet(4, newatomic).
tablet(1, n1ewatomic).
tablet(2, n2ewatomic).