【问题标题】:Prolog: getting a list of atomsProlog:获取原子列表
【发布时间】:2013-11-15 10:45:57
【问题描述】:

我有一组这样的事实:

person(tj, 'Tom James', house).
person(jj, 'Jim Jones', hut).
person(aw, 'Alex Wolf', boat).
person(jw, 'John Wolf', boat).

我想获取他们可以居住的地方的列表:

[boat, house, hut].

我试过 setof:

placeList(Places) :- setof(Place, person(_, _, Place), Places).

但我一次只得到每个地方,而不是一个列表。我也试过 findall,但这会重复船,而且不是标准顺序。有人可以指出我在这里出错的地方吗?谢谢。

【问题讨论】:

  • 你也可以在findall的结果上使用sort/2

标签: prolog


【解决方案1】:

您必须明确量化:为变量添加存在约束

placeList(Places) :- setof(Place, K^N^person(K, N, Place), Places).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多