如何修复Prolog Type错误:'callable'预期,找到'1'

时间:2016-07-01 16:01:44

标签: prolog

这是我的来源:

and(A,B) :- A,B.
and(A,B) :- A=:=1, B=:=1.

我希望and使用布尔值或数字(其中1为真,0为假)输入并获得正确的结果。

我运行脚本并编写此查询:

A=0, B=1, and(A,B).

但是我收到了这个错误:

ERROR: and/2: Type error: 'callable' expected, found '1'

1 个答案:

答案 0 :(得分:3)

Prolog标准定义了callable/1内置谓词。这是一个类型检查谓词,当其参数绑定到可调用术语时为true。因此,您可以编写例如:

and(A,B) :- callable(A), callable(B), call((A,B)).
and(A,B) :- A=:=1, B=:=1.