Prolog中的模
我试图使用一个条件语句,如果N是dosomething,否则就做别的事情。 下面是我正在执行的代码的某些部分: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,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
write0是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.