【发布时间】:2021-08-31 22:12:45
【问题描述】:
我有一个谓词 set/2 应该将第二个参数实例化为一个列表,其元素只是第一个参数中每个术语的一次出现。到目前为止我所拥有的是:
set([],OutList).
set([X|InList],OutList) :- \+member(X,InList), append([X], OutList, OutListNew), set(InList,OutListNew).
set([X|InList],OutList) :- member(X,InList), set(InList,OutList).
然后调用 set/2:
set([1,1,2,3],X).
返回真。那是一半 - 我希望 X 被实例化为 [1,2,3] - 但我不确定在这种情况下如何使 X 为真。任何帮助和解释将不胜感激。
【问题讨论】:
标签: list prolog logic unification