Prolog中的模

Prolog中的模,prolog,Prolog,我试图使用一个条件语句,如果N是dosomething,否则就做别的事情。 下面是我正在执行的代码的某些部分: (N,Lines,1):-write(N),nl, ( mod(N,2) = 0 -> write('Hello'),nl,write('Again Hello') ; foo(N,Lines) ). 但即使我给出N=6,它也会进入foo(N,行)即else部分。它不进入if部分。有人能告诉我哪里错了吗?不要写成mod(N,2)=0write0是mod(N,

我试图使用一个条件语句,如果N是dosomething,否则就做别的事情。 下面是我正在执行的代码的某些部分:

(N,Lines,1):-write(N),nl,
(    mod(N,2) = 0 ->
 write('Hello'),nl,write('Again Hello')

;
    foo(N,Lines)

).

但即使我给出N=6,它也会进入
foo(N,行)
即else部分。它不进入if部分。有人能告诉我哪里错了吗?

不要写成
mod(N,2)=0
write
0是mod(N,2)
0=:=mod(N,2)
(就像mat在评论中说的那样)

比如:

如果
N=6
,就像你的例子,我得到:

6
Hello
Again Hello
true.

有一些关于prolog算术的例子。

要测试算术表达式的相等性,请使用
(=:=)/2
而不是
(=)/2
,例如:
mod(N,2)=:=0
。对不起,我最初发布了一个事实上错误的答案,至少使用了SWI prolog(我通常使用eclipse,它有mod/3)。使用它更好(=:=)/2而不是(is/2),当两个参数都已实例化时。
6
Hello
Again Hello
true.