2009/6/13 Peter Szeredi <szeredi(a)cs.bme.hu>hu>:
A 4. kishazi kapcsan fordult elo ez a problema, mar
masodszor, ezert
kozreadom
[...]
Ez azert van, mert a teszteleskor -- esetleges
nevutkozesek elkerulesere --
a '$module_being_tested' modulba toltjuk be a megoldasokat. Emiatt a
call(user:xxxx) alaku akciok nem mukodnek.
Szerencsesebbnek (es hatekonyabbnak) gondolnam, ha el tudnad kerulni a call
akciok hasznalatat. Egyebkent a
current_predicate(<eljarasnev>, M:_),
hivassal le lehet kerdezni annak a modulnak a nevet, ahol az adott
eljaras definialva van, es ezt az M modulnevet kell hasznalni a call
akcioban a user helyett.
Nekem explicit csomagnévre máshol volt szükségem: a 4. kis háziban az
fd_global lapítás paraméterében, ugyanis a tesztelő program úgy
vizsgálja, hogy a globális korlát aktív-e, hogy a call_residue
eredményében (_-(_:max_lt(_,_))) alakú elemet keres. Mutatom.
[am]king ~/a/nlp/khf4$ rlwrap sicstus
SICStus 3.12.8 (x86_64-linux-glibc2.3): Tue May 8 13:15:39 CEST 2007
Licensed to BUTE NHLP
| ?- [khf4, teszt].
% consulting /home/ambrus/a/nlp/khf4/khf4.pl...
% loading /home/ambrus/local/sicstus/lib/sicstus-3.12.8/library/clpfd.po...
[...]
% loaded /home/ambrus/local/sicstus/lib/sicstus-3.12.8/library/clpfd.po
in module clpfd, 20 msec 915784 bytes
% module lists imported into user
% consulted /home/ambrus/a/nlp/khf4/khf4.pl in module user, 20 msec 933912 bytes
% consulting /home/ambrus/a/nlp/khf4/teszt.pl...
% consulted /home/ambrus/a/nlp/khf4/teszt.pl in module user, 0 msec 3584 bytes
yes
| ?- globtest(true, max_lt([A,B,C],Z), (A in 1..5, B #> 2, Z in 0..6), Result).
Result = active([1..5,3..5,inf..5],4..6) ? ;
no
| ?- max_lt([A,B,C],Z), A in 1..5, B #> 2, Z in 0..6.
user:max_lt([A,B,C],Z),
Z in 4..6,
A in 1..5,
B in 3..5,
C in inf..5 ? ;
no
| ?-
[am]king ~/a/nlp/khf4$ rlwrap sicstus
SICStus 3.12.8 (x86_64-linux-glibc2.3): Tue May 8 13:15:39 CEST 2007
Licensed to BUTE NHLP
| ?- ['khf4-n', teszt].
% consulting /home/ambrus/a/nlp/khf4/khf4-n.pl...
% loading /home/ambrus/local/sicstus/lib/sicstus-3.12.8/library/clpfd.po...
[...]
% loaded /home/ambrus/local/sicstus/lib/sicstus-3.12.8/library/clpfd.po
in module clpfd, 20 msec 915784 bytes
% module lists imported into user
% consulted /home/ambrus/a/nlp/khf4/khf4-n.pl in module user, 20 msec
933784 bytes
% consulting /home/ambrus/a/nlp/khf4/teszt.pl...
% consulted /home/ambrus/a/nlp/khf4/teszt.pl in module user, 0 msec 3584 bytes
yes
| ?- globtest(true, max_lt([A,B,C],Z), (A in 1..5, B #> 2, Z in 0..6), Result).
Result = exited([1..5,3..5,inf..5],4..6) ? ;
no
| ?- max_lt([A,B,C],Z), A in 1..5, B #> 2, Z in 0..6.
Z in 4..6,
A in 1..5,
B in 3..5,
C in inf..5,
max_lt([A,B,C],Z) ? ;
no
| ?-
[am]king ~/a/nlp/khf4$ diff -u khf4{,-n}.pl
--- khf4.pl 2009-06-19 00:10:48.000000000 +0200
+++ khf4-n.pl 2009-06-20 13:58:12.000000000 +0200
@@ -109,8 +109,7 @@
max_lt(L, Z) :-
map(lambda(arg(X, minmax(X)), true), L, Mml),
- current_predicate(max_lt, Pkg:_),
- fd_global(Pkg:max_lt(L, Z), rec(L), [minmax(Z) | Mml], [idempotent(false)]).
+ fd_global(max_lt(L, Z), rec(L), [minmax(Z) | Mml], [idempotent(false)]).
:- multifile clpfd:dispatch_global/4.
:- discontiguous clpfd:dispatch_global/4.
1[am]king ~/a/nlp/khf4$
Ambrus