:- include(library(persdb)).
%% Required declarations for persistent_dir/2.
:- multifile persistent_dir/2.
:- data persistent_dir/2.
%% Declare the directory associated to the key "db" where the
%% persistence sets of the persistent predicates are stored:
persistent_dir(db,'./').
%% Declare a persistent predicate:
:- persistent(bar/1, db).
%% Read a term, storing it in a new fact of the persistent predicate
%% and list all the current facts of that predicate
main:-
read(X),
passertz_fact(bar(X)),
findall(Y,bar(Y),L),
write(L).
Luego, escribo en el toplevel: make_exec('./prueba.pl',_). obteniendo asi el ejecutable. Tras ejecutarlo obtengo el siguiente mensaje de error:
{ERROR: No handle found for thrown error error(existence_error(source_sink,/temp/prolog/user/bar_1.pl),-(/($open,3),1))} con lo cual no consigo nada. Creo que es porque no se crea bien la base de datos, que supongo que sera el fichero
"bar_1.pl" que intenta abrir. He intentado todo lo que se me ha ocurrido y no he conseguido nada.
Si cargo el programa en el toplevel (uso las emacs) obtengo el error:
ensure_loaded('c:/temp/prolog/prueba.pl').
{ERROR: persdbrt:init_persdb/0 - undefined predicate} yes
?-
He notado que si voy al directorio /library/persdb/ y cargo persdb.pl y la cargo en el toplevel (con CTRL-C-L) me da el
mismo error (como si la libreria no estuviera bien?).
He intentado crear el fichero /user/bar_1.pl a mano, pero entonces tras escribir lo que me pide con el read
obtengo el error:
{ERROR: No handle found for thrown error error(existence_error(procedure,/(user:passertz_fact,1)),/(user:passertz_fact,1))}
� Me puede indicar alguien que es lo que estoy haciendo mal ?
Muchas Gracias por adelantado,
Borja Garcia-Almuzara Rodriguez
email: d960022@zipi.fi.upm.es
borja_g@teleline.es
NOTA: Estoy probandolo todo en el W98, con el ciao-1.7p30Win32