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
感謝您的幫助! –