Prolog继续对我说'no' .... :(
我非常是prolog的新手,我有一个基本问题:
所以我试图制作一个简单的规则,检查三个数字是否构成直角三角形边的长度,如下所示:
addup(X,Y,Z) :- X is Y+Z. /* this works*/
pythag(H,A,B) :- (H*H) is (A*A) + (B*B). /*this doesn't work*/
对于测试,'addup'规则似乎有效.... 我相信我的程序中“IS”的左侧存在问题,因为以下测试似乎表明了这一点:
在交互模式中,我可以判断2是1还是1的总和,它表示是:
| ?- 2 is 1+1.
yes
但如果我切换左右两侧;它说没有:
| ?- 1+1 is 2.
no
有人可以提供上述pythag规则的正确版本吗? 版本信息如下:
GNU Prolog 1.3.0
By Daniel Diaz
Copyright (C) 1999-2007 Daniel Diaz
| ?-
答案 0 :(得分:2)
我的序言知识已经过时,但我认为问题在于Prolog只评估is
所以试试:
pythag(H,A,B) :- Z is H*H, Z is (A*A) + (B*B).