Właśnie nawiązałem połączenie z SWI Prolog i chcę manipulować faktami. na przykład wycofać i potwierdzić je.Prolog C# Interfejs chowa się z pliku
mam jakąś funkcję tak:
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.");
Jak widać z tej funkcji, to działa na twierdzeniu, zgodnie z oczekiwaniami, ale nie chowa się. Chodzi o to, że chcę usunąć wszystkie fakty (są dynamiczne) z pliku przed wstawieniem kolejnych. PlQuery.PlCall("retractall(tablet/2).");
to zapytanie musi usunąć cały rekord, który znajduje się w pliku. a także jak usunąć fakt, na przykład tablet(4,newatomic)
, ale nie usuwać kolejnych faktów.
Powstały plik po wykonaniu brzmi:
:- dynamic tablet/2.
tablet(4, newatomic).
tablet(1, n1ewatomic).
tablet(2, n2ewatomic).