Code Comments
Programming Forum and web based access to our favorite programming groups.Take a look at http://www.kprolog.com/en/logical_assignment/ Here is an almost portable, almost logical implementation of predicate set that may replace destructive assignment predicates. assignable(X) makes X an assignable term, X<=V makes the value of assignable term X to V(old values backed up), X<+V commits the value of X to V (no backup to choice point), X=>V unifies the value of X with V. It is important that there is a compatible implementation that does not use any destructive assignment builtin predicate. The implementation is slow but logical. It is also important that the faster implementation uses setarg/3, but hides the differences between setarg/3 implementations successfully. A list permutation example, listPermutor(P,[a,b,c]), listPermute(P,L1), listPermute(P,L2), listPermute(P,L3), results L1=[a,b,c],L2=[a,c,b],L3=[b,a,c]. No backtracking required to generate these results, and no destructive assignment required, when the slower implement is used. Wish you a Happy New Year, -- Nobukuni Kino, KLS Research,Inc. kino@kprolog.com
Post Follow-up to this messagePowered by vBulletin
Copyright 2000-2006 Jelsoft Enterprises Limited.