我在我的文件中有以下prolog表達式,這很自我解釋。我有這個規則所需的所有必需功能(稱爲1),並且正確地執行和測試。序言:由於對第一個表達式的偏好,不能統一表達第二個表達式
cal(plus(X,Y),Z):-cal(X,int(Z1)),cal(Y,int(Z2)),add(Z1,Z2,Z3),Z=int(Z3) ; cal(X,real(Z1)),cal(Y,real(Z2)),add(Z1,Z2,Z3),Z=real(Z3).
經過努力我無法弄清楚小時以下:
?-call(plus(int(9),int(10)),Z).
工作正常,並返回: -
Z = int(19).
,但它不統一
?-call(plus(real(9.0),real(10.0),Z).
我試了很多東西,並得出結論這是由於規則1中的整數部分(before;)首先被指定爲實部(我交換了兩部分,並且它開始以相反方式工作)。它試圖與第一部分相結合並一再進行。由於沒有這樣的事實,它就會陷入無限循環。 請指定一種替代方法來做同樣的事情。這是我的任務中唯一剩下的部分,我已經打了好幾個小時了。
在此先感謝!
你不明白這個問題。你的也不行。同樣的錯誤。 – higherDefender 2011-04-04 15:14:44