Prolog - Asegurar y retraer
-
19-09-2019 - |
Pregunta
Me preguntaba, soy consciente de que puede utilizar para agregar assert
hechos o reglas o lo que sea que se haya declarado el predicado que se -:dynamic
, pero esto sólo permite que los cambios que se hacen para mantenerse en esa sesión única, por ejemplo, si se cierra la ventana de Prolog a continuación, los cambios de base de datos se pierden.
Así que me preguntaba, ¿hay alguna manera de hacerlo de manera que los predicados assert
y retract
pueden realizar cambios permanentes en el prólogo .PL archivo?
Gracias
Solución
Te puedo sugerir una manera muy simple de hacer esto.
1 ?- assert(a(1)).
true.
2 ?- assert(a(2)).
true.
3 ?- assert(a(3)).
true.
4 ?- a(A).
A = 1 ;
A = 2 ;
A = 3.
5 ?- tell('a_db.txt'), listing(a), told.
true.
A continuación, cierre la sesión, vuelva a abrir.
1 ?- a(A).
ERROR: toplevel: Undefined procedure: a/1 (DWIM could not correct goal)
2 ?- ['a_db.txt'].
% a_db.txt compiled 0.00 sec, 516 bytes
true.
3 ?- a(A).
A = 1 ;
A = 2 ;
A = 3.
4 ?- listing(a).
:- dynamic a/1.
a(1).
a(2).
a(3).
true.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow