xpce ventanas swi para librerias interfaz imagenes grafica formularios ejecutable crear calculadora c# prolog

ventanas - La interfaz Prolog C#se retracta del archivo



ventanas prolog (1)

Bueno, no quiero eliminar una pregunta, porque tiene dos votos ascendentes. Tal vez sea útil para alguien.

Entonces, la lógica era correcta.

Cuando queremos adjuntar algo a la base de datos, escribimos:

assert(predicat(var1, var2, ... , varn))

Cuando queremos eliminar algo de la base de datos, escribimos:

retract(predicat(var1, var2, ... , varn)) retractall(predicat(var1, var2, ... , varn))

Si todos los términos son iguales, se elimina de db (también debe ser dinámico)

Si queremos eliminar todos los datos, debemos especificarlos por Variable. Asi que...

retract(predicat(_,_,...,_)) retractall(predicat(_,_,...,_))

eliminará todos los datos que coincidan con la consulta. Y para guardar los datos, solo escribimos a continuación:

tell(''database_file.txt''), %opening file for writing listing(ig_node), %writing told. %closing/saving file

Acabo de establecer una conexión con SWI Prolog y quiero manipular hechos. por ejemplo, retractarse y afirmarlos.

Tengo alguna función como esta:

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.");

Como puede ver esta función, está funcionando para la aserción como se esperaba, pero no para retraerse. El asunto es que, quiero eliminar todos los datos de las tabletas (son dinámicos) del archivo antes de insertar los siguientes. PlQuery.PlCall("retractall(tablet/2)."); esta consulta debe eliminar todos los registros que están en el archivo. y también cómo eliminar un hecho, por ejemplo, tablet(4,newatomic) , pero no para borrar otros hechos.

El archivo resultante después de la ejecución es:

:- dynamic tablet/2. tablet(4, newatomic). tablet(1, n1ewatomic). tablet(2, n2ewatomic).