Prolog 中的模数

4 prolog

我正在尝试使用条件语句,如果 N 甚至做某事,否则做其他事情。这是我正在执行此操作的代码的一部分:

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

;
    foo(N,Lines)

).
Run Code Online (Sandbox Code Playgroud)

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

She*_*vic 5

而不是将其写为mod(N,2) = 0write0 is mod(N,2)0 =:= mod(N,2)(就像评论中所说的那样)

喜欢:

write(N),nl,
(    0 is mod(N,2) ->
 write('Hello'),nl,write('Again Hello')
;
    foo(N,Lines)
).
Run Code Online (Sandbox Code Playgroud)

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

6
Hello
Again Hello
true.
Run Code Online (Sandbox Code Playgroud)

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