所以基本上这里是我使用GNU-Prolog 1.4.4编写的一些Prolog代码。
A is 1,
B = (A == 2),
B == no.
A is 2,
B = (A == 2),
B == no.
我期待的是当A
为2时,B == no
返回no
,当A
为1时,B == no
会返回yes
}。
然而,令我惊讶的是,两个代码段都返回no
,这让我觉得B == no
以一种意想不到的方式工作......
所以基本上我怎样才能以我想要的方式编写代码?
有人能给我一些帮助吗?
答案 0 :(得分:4)
该行
B = (A == 2)
不以任何方式计算A==2
并将结果分配给B
。它只是将术语B
(变量)与术语(A==2)
统一起来。统一的结果是B
现在是A==2
。您可以省略B==no
:
?- A is 1, B=(A==2).
A = 1,
B = (1==2) ?
yes
如果你真的希望B
与原子yes
结合使用。 no
您可以使用if-then-else结构:
( A == 2 -> B = yes
; otherwise -> B = no)