我有一个谓词检查偶数。但是,当我执行查询时,它总是返回false。我是prolog的新手,对此行为我感到很困惑
Even(N):- N mod 2 = 0.
更新:
如果我将其更改为Even(N):- 0 is N mod 2.
,则它可以工作。为什么会这样?
答案 0 :(得分:1)
您没有使用适当的运算符,并且有一些错字!首先,谓词的名称以小写字母(even
代替Even
开头)。相等比较的运算符是=:=
(您正在使用=
来实现统一!和is
来将值应用于变量。尽管您的权利是0 is 0
偶数并在此处起作用,但在某些情况下会失败。请参见here了解更多信息。
even(N):- mod(N,2) =:= 0.