From: Terrance S. <ts...@us...> - 2008-01-26 17:20:02
|
Update of /cvsroot/xsb/XSB/packages/clpqr In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv23738 Added Files: swi.P Log Message: Added interface module for swi. --- NEW FILE: swi.P --- :- export nb_delete/1, nb_getval/2, nb_setval/2, setarg/3, maplist/2, term_variables/2, ignore/1, strip_module/3,statistics/2. :- import trie_delete/2,trie_create/2, trie_unify/2, trie_insert/2 from intern. :- import append/3,ground/1 from basics. :- import call_c/1 from standard. % emulating non-backtrackable "global" variables using private tries. nb_delete(Key):- trie_delete(swi_global,pair(Key,_)). nb_getval(Key,Val):- trie_unify(swi_global,pair(Key,Val)). nb_setval(Key,Val):- (trie_delete(swi_global,pair(Key,_)) ; true), trie_insert(swi_global,pair(Key,Val)). ?- trie_create(Tid,[alias(swi_global),type(pras)]). :- import set_arg/3 from machine. setarg(N,T,A):- set_arg(T, N, A). % maplist(:Goal, +List) % % True if Goal can succesfully be applied on all elements of List. % Arguments are reordered to gain performance as well as to make % the predicate deterministic under normal circumstances. maplist(Goal, List) :- maplist2(List, Goal). maplist2([], _). maplist2([Elem|Tail], Goal) :- call(Goal, Elem), maplist2(Tail, Goal). call(Goal,Arg):- Goal =.. GoalList, append(GoalList,[Arg],NewgoalList), Newgoal =.. NewgoalList, call_c(Newgoal). term_variables(Term, Vars) :- listofvars(Term, Vs, []), sort(Vs, Vars). listofvars(Term, Vh, Vt) :- (var(Term) -> Vh = [Term | Vt] ; Term =.. [_|Args], listofvars1(Args, Vh, Vt) ). listofvars1([], V, V). listofvars1([T|Ts], Vh, Vt) :- listofvars(T, Vh, Vm), listofvars1(Ts, Vm, Vt). ignore(G):- G,!. ignore(_). statistics(runtime,[X]):- walltime(X). % SWI returns current module for second clause -- usermod is a guess, % as XSB does not have a "current" module. strip_module(QClause, Module, Clause):- ground(QClause), QClause = Module:Clause, !. strip_module(Clause, usermod, Clause). |