【发布时间】:2020-04-03 18:57:21
【问题描述】:
我目前正在学习 Prolog,我想创建一个特定的规则来检查一个人是否可以看电影。真实的条件应该是人的年龄大于电影要求的年龄。
所以我有类似的东西:
person("John",19).
person("Kate",14).
person("Carl",8).
film("Shining",18,"Horror").
film("Little Agents",13,"Family").
film("Frozen",7,"Animation").
can_borrow(film(_,Age1,_),person(_,Age2)):-Age2>=Age1.
如果我问,即
?- can_borrow(film("Shining",18,"Horror"),person("John",19)).
它工作并返回 true。
但是当我要求向我展示所有可能的组合时(每个人都可以观看的所有电影)
?- can_borrow(X,Y).
我有一个错误:
ERROR: Arguments are not sufficiently instantiated
如何正确地编写规则,让它像我上面写的那样工作?
提前致谢。
【问题讨论】:
标签: prolog