Prologで比較的単純な述語を書くのに問題があります。この述語は、時間:分という形式で2つの引数を受け取り、2つの間の差を計算して、その値が40分以上であるかどうかを確認することになっています。
これが私がこれまでに持っているものです:
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
それで、私が理解できる限り、彼は彼が4つの議論を与えられたと思います。なぜ彼はこのように反応しているのですか?また、ファイルの先頭には、次のコマンドがあります。
:-op(500,xfy,:).
:-op(600,xfy,/).
この述語はより大きなプログラムの一部であると想定されているため、これらの2行はファイルにとどまる必要があります。モジュールを使用しておらず、YAPを使用しています。
どんな助けでもいただければ幸いです!