2
我在编写Prolog中一个相对简单的谓词时遇到了一些麻烦。这个谓词应该以小时:分钟的格式接收两个参数,计算两者之间的差异并检查该值是大于还是等于40分钟。计算Prolog中的时间差异
这是我到目前为止有:
time(Time1, Time2):-
X:Y =:= Time1, A:B =:= Time2, calculate_time(X, Y, A, B).
calculate_time(X, Y, A, B):-
Y - X =:= 0,
B - A >= 40, !.
calculate_time(X, Y, A, B):-
Y - X > 0.
这一点,你可以想像,是给了一个错误,即:
?- time(10:00, 10:55).
ERROR at clause 1 of user:time/2 !!
INSTANTIATION ERROR- in arithmetic: expected bound value
所以,据我了解,他认为他得到了四个论点。他为什么这样反应?此外,在文件的开头,我有以下命令:
:-op(500,xfy,:).
:-op(600,xfy,/).
这个谓词应该是一个更大的计划的一部分,所以这两条线需要留在文件中。我没有使用任何模块,我正在使用YAP。
任何帮助,将不胜感激!
提示:相反的是哟说(>)/ 2确实评估,只有(@>)/ 2不评估。检查:http://www.swi-prolog.org/man/arith.html –
你是对的。修复答案 – gusbro
感谢您的帮助! –