Mod 或者 Predicate 总是失败

Mod or Predicate always fails

我正在编写序言程序,我需要确定一个数是偶数还是奇数。我正在尝试制作一个接受数字的谓词,mods 它如果成功则为偶数,如果失败则为奇数。

我的代码如下所示:

modNum(num):-
    0 =:= mod(num, 2).

但是即使我输入6也是假的。如果我输入 3,则为假。我曾尝试在网上找到解决方案,但 none 的答案似乎与 mod 有关,所以我无法判断我是否在该部分做错了。

更新:我已将此功能更改为

modNum(num):-
    6 =:= 6.

它仍然失败。我不知道我的 mod 是否仍然不正确,但为什么当 6 为 6 时我的谓词失败,所以应该成功并打印 true。

在 Prolog 中,变量名必须以大写字母开头。你写的num其实是一个符号,不是变量。比较以下典型代码:

loves(hans, lisa).
loves(lisa, spicy_food).

现在有了变量:

loves(Who, What) :-
    Who = hans,
    What = lisa.