freeze/2 and nb_setarg/3 interaction
Michael Hendricks <[email protected]> Wed, 9 Apr 2014 08:58:20 -0600
| Newsgroups | gmane.comp.ai.prolog.swi |
|---|---|
| Message-ID | <CAFHuXua8iYB2RJWsC1C7ygYxuvDwSB_ZSC=CyHKLMoEpVdPkZw@mail.gmail.com> |
freeze/2 and nb_setarg/3 seem not to work together. Consider this example:
correct :-
X=[_|_],
( nb_setarg(1,X, a),
nb_setarg(2,X, [b,c]),
writeln(X),
fail
; writeln(X)
).
broken :-
X=[H|T],
freeze(H,nb_setarg(1,X,H)),
freeze(T,nb_setarg(2,X,T)),
( H = a,
T = [b,c],
writeln(X),
fail
; writeln(X)
).
?- correct.
[a,b,c]
[a,b,c]
true.
?- broken.
[a,b,c]
[_G1009|_G1010]
true.
Is that expected behavior?
--
Michael
-------------- next part --------------
HTML attachment scrubbed and removed