假设我有一个英文表达:
日是晚上8点之前和早上8点之后
如果我想在prolog中表达这一点,我可以这样做:
day(X) :- X<=2000,X>=800.
2000 = 8pm
800 = 8am
但这不会奏效。是否有更好的方式来表达上述英语表达?
答案 0 :(得分:0)
首先,Prolog中较小的等于运算符为=<
而不是<=
。此外,上述代码不起作用,因为已经使用了运算符=
。如果你想要达到的目标是在晚上8点将价值限制在2000等,那么一个简单的方法就是制作形式的事实:
fact(2000, 8-pm).
fact(800, 8-am).
并使用它:
day(X) :- fact(Y,8-pm),fact(Z,8-am),X=<Y,X>=Z.
示例:
?- day(500).
false.
?- day(900).
true ;
false.
请注意,上述内容不适用于day(X)
等期望回答X的上限和下限的查询。