如何编写给两个人的Prolog规则,测试在给定日期之前是否在它们之间的任何一个方向发送了消息?
到目前为止,我有:
?- MBefore(x,y) :- message(x,y,d1), message(y,x,d1), d1@<Date.
答案 0 :(得分:1)
mbefore(X,Y,D) :- message(X,Y,D1), D > D1 ; message(Y,X,D1), D > D1.
此处','
表示“和”,';'
表示“或”。 “或”组合的两种选择都是独立尝试的。首先,系统尝试证明第一个替代方案(在;
的左侧),然后搜索回溯,任何逻辑变量都恢复到之前的状态,第二个替代(在';'的右侧)是试过。这就是为什么我们可以在“或” -combination的两种替代方案中使用相同的logvar D1
。
此外,':-'
表示“成立,如果以下内容可以证明”。
如果上述任何一项对您来说都是新的,那么您应该通过一些教程或教科书来学习该语言的基础知识。 “Prolog的艺术”是一本优秀的入门书。