我正在尝试创建 2 个列表的交集(即列表 C 包含那些且仅包含 A 和 B 中的那些元素),但据我所知,我得到了 2 个列表的析取 + C 中任意数量的任何元素。
打算像这样工作:
- 如果 X 在 C 中,那么它必须同时在 A 和 B 中。(我相信 X 应该迭代 C 的所有成员!?)
- 谓词:
d(A,B,C) :- (member(X,D)->member(X,A),member(X,B)).
你能说:我的句子和谓词不相等还是我犯了另一个错误?
例子:
?- [user].
|: d(A,B,C) :- (member(X,D)->(member(X,A),member(X,B))).
|: % user://1 compiled 0.01 sec, 612 bytes
true.
?- d([a,b],[b,c],C)
| .
C = [b|_G21] .
?- d([a,b],[b,c],[b]).
true .