Prolog - VALOIR et RETRACT
-
19-09-2019 - |
Question
Je me demandais, je suis conscient que vous pouvez utiliser assert
pour ajouter des faits ou des règles ou quoi que si vous avez déclaré le prédicat à -:dynamic
, mais cela ne permet que les modifications apportées à garder à cette session que, par exemple si vous fermez la fenêtre Prolog alors les modifications de base de données sont perdues.
Alors je me demandais, est-il possible de faire en sorte que les prédicats assert
et retract
peuvent apporter des changements permanents au Prolog .pl fichier?
Merci
La solution
Je peux vous suggérer une façon très simple de le faire.
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.
Alors la fermeture de session, ouvrez à nouveau.
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.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow