Re: how to clean user

Jan Wielemaker <[email protected]>
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <[email protected]>
Tad,

There are enough ways to isolate and clean data.  A total reset
is hardly ever a good idea and pretty hard to implement because
there is a lot of state in the system.  Eventually,
SWI-Prolog is likely to get a transactional database, which can
simplify some of these scenarios.

A bigger worry for this type of dynamically swapping code however is 
that not everything is reclaimed, so you will suffer from memory leaks.
Notably modules, predicates and functors (name/arity pairs) are never 
reclaimed.  Modules can be wiped, but the module structure is not 
deleted and while the clauses of a predicate are truely removed, the
predicate structure is not.

So, somehow you have to ensure that you reuse modules and predicates
if you want to run 24*7.

	Cheers --- Jan

On 10/23/2013 01:29 PM, Tad Szuba wrote:
> Hi!
>
> Thanks! - now I will experiment with abolish/1
>
> However; I think, that function for reseting the user is necessary.
>
> I case of "intelligent agents" ; even single agent is restarting again
> and again his business planning strategy ;
>
> from scratch, because new facts are emerging and continuation of
> previous thread of inference is bad solution.
>
> With best regards
> Tad
> //////////////////////////////////
>
>
> -----Oryginalna wiadomość----- From: Jan Wielemaker
> Sent: Wednesday, October 23, 2013 1:03 PM
> To: Tad Szuba ; Paul Singleton
> Subject: Re: how to clean user
>
> On 10/23/2013 11:48 AM, Tad Szuba wrote:
>> Hi!
>>
>> My Java --> Prolog --> Java system
>>      for A. Smith Invisible Hand of Market simulations is "almost
>> working"
>>
>>    however I face problem ...
>>
>> When Prolog is used for next agent to infer for him (file
>> wantsToBuy4878293086935712258)
>>
>> Prolog "user"  remembers predicates from previous inference (file
>> wantsToBuy126437475720758049)
>>
>> see:
>> ERROR: c:/users/user/workspace/mainmodule4254950593641732242.pl:1:
>>     import/1: No permission to import
>> wantsToBuy4878293086935712258:goodsWB/5 into user (already imported from
>> wantsToBuy126437475720758049)
>>
>> Question is on how to reset/clean "user" without total restart of Prolog
>> ...
>
> I guess that the simplest option is to make sure it isn't imported into
> user in the first place.  I.e., do not export anything from your modules
> and simply call the predicate in its module.
>
> But, you can also call abolish/1 on these predicates.  Abolish on an
> imported predicate removes the import, not the predicate itself.
>
> Cheers --- Jan
>
>>
>> I have found some old (2004) discussion regarding this problem between
>> Paul and Michal Jakob from
>> FEE Czech Technical University Prague; but without clear solution.
>>
>> With best regards
>> Tad Szuba
>> Cracow, Poland
>>
>

_______________________________________________
SWI-Prolog mailing list
[email protected]
https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.