2

我有这个工作谓词来表示 2 组的差异

difference([],Y,[]).
difference([X|R],Y,Z) :-
    member(X,Y),
    !,
    difference(R,Y,Z).
difference([X|R],Y,[X|Z]) :-
    difference(R,Y,Z).

但我想为 3 套做类似的事情,但我无法弄清楚 difference(S1,S2,S3,result)导致(S1\S2)\S3

4

1 回答 1

1

好吧,您基本上自己已经说过了:采用公式(S1\S2)\S3 ,将S1\S2替换为T1(临时),然后得到的公式为T1\S3

所以现在把它放到代码中:

difference(S1,S2,S3,Result) :-
    difference(S1,S2,T1),       %T1 = S1\S2
    difference(T1,S3,Result).   %Result = T1\S3=(S1\S2)\S3
于 2016-01-07T21:30:41.950 回答