检查列表的Prolog查询

时间:2017-03-24 23:05:18

标签: prolog

我对prolog很新,在学习的过程中,我偶然发现了一个我遇到的问题。我基本上有一些数据库事实。他们是:

book(year(1937), title([of,mice,and,men]), rating_out_of_ten(9)).
book(year(2008), title([the,hunger,games]), rating_out_of_ten(8)).

我正在尝试查询带有""在标题中。这就是我的尝试:

book(year, title, rating_out_of_ten), member(of, title).

执行此操作时返回false。有人可以请帮助。提前谢谢。

2 个答案:

答案 0 :(得分:2)

所以我也是新手,但我想我知道解决方案:

  1. 在您的查询中,您实际上使用了错误的谓词,它应该是“预订”,而不是“电影”

  2. 查询应如下所示:

  3. book(X,title(Y),Z), member(of,Y)

    参数必须大写(它们必须是变量),但要到达列表的元素,您必须使用列表的名称,然后使用变量,如下所示:

    title(Y)
    

    所以你可以在成员谓词中使用'Y'。

答案 1 :(得分:2)

请记住,变量名必须以大写字母(或下划线)开头。另外,当你的事实是movie时,你真的在​​查询book吗?

你可以尝试:

?- book(year(Y), title(T), rating_out_of_ten(R)), member(of, T).