【发布时间】:2020-02-28 05:31:44
【问题描述】:
我是 prolog 的新手,据我了解,'distinct' 的目的是清除重复项。但是,这个代码块:
allpartsincity(City):-
distinct((proj(Project, _, City), sppj(_, Part, Project, _), part(Part, _, _, _, _))),
part(Part, Name, Color, Num, X),
format('~w ~w ~w ~w ~w ~n', [Part, Name, Color, Num, X]),
fail
;
true.
产生以下结果:
?- allpartsincity(london).
p2 bolt green 17 paris
p5 cam blue 12 paris
p2 bolt green 17 paris
p6 cog red 19 london
p5 cam blue 12 paris
true.
我不确定我错过了什么,但如果有人能指出我正确的方向,我将不胜感激。
【问题讨论】:
-
避免像使用格式一样手动编写。相反,定义一个具有更多参数的关系,以便prolog-toplevel 可以为您打印它。在你的情况下,
city_part(City, part(Part, Name, Color, Num, X)) :- ...
标签: prolog prolog-setof