我的文件中有以下 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 中的整数部分(之前;)比实数部分先指定(我交换了两者,它开始以相反的方式工作)。它试图与第一部分统一并反复进行。由于那里没有这样的事实,它只会进入无限循环。请指定另一种方法来做同样的事情。这是我的任务中唯一剩下的部分,我被它打动了好几个小时。
提前致谢!