2
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を使用しています。
助けていただけたら幸いです!
ヒント:ヨーヨーは(>)/ 2と言うことに反して(@>)/ 2は評価されません。チェックアウト:http://www.swi-prolog.org/man/arith.html –
あなたは正しいです。固定の答え – gusbro
助けてくれてありがとう! –