我对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。有人可以请帮助。提前谢谢。
答案 0 :(得分:2)
所以我也是新手,但我想我知道解决方案:
在您的查询中,您实际上使用了错误的谓词,它应该是“预订”,而不是“电影”
查询应如下所示:
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).