use ordsets in library(dif)

This commit is contained in:
Mark Thom
2019-03-12 19:13:03 -06:00
parent 2af08b31d2
commit b5ad8051d8
2 changed files with 5 additions and 8 deletions

View File

@@ -1,18 +1,15 @@
:- module(dif, [dif/2]).
:- use_module(library(atts)).
:- use_module(library(ordsets)).
:- attribute dif/1.
non_unif_member([X \== Y | Z], V, W) :-
( X == V, Y == W -> true
; non_unif_member(Z, V, W)
).
put_dif_att(Var, X, Y) :-
( get_atts(Var, +dif(Z)) ->
( non_unif_member(Z, X, Y) -> true
; put_atts(Var, +dif([X \== Y | Z]))
ord_add_element(Z, X \== Y, NewZ),
( Z == NewZ -> true
; put_atts(Var, +dif(NewZ))
)
; put_atts(Var, +dif([X \== Y]))
).

View File

@@ -183,11 +183,11 @@ impl Machine {
compile_user_module(self, TERMS.as_bytes());
compile_user_module(self, DCGS.as_bytes());
compile_user_module(self, ATTS.as_bytes());
compile_user_module(self, ORDSETS.as_bytes());
compile_user_module(self, DIF.as_bytes());
compile_user_module(self, FREEZE.as_bytes());
compile_user_module(self, REIF.as_bytes());
compile_user_module(self, ASSOC.as_bytes());
compile_user_module(self, ORDSETS.as_bytes());
}
pub fn new() -> Self {