这是我的来源:
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'
答案 0 :(得分:3)
Prolog标准定义了callable/1
内置谓词。这是一个类型检查谓词,当其参数绑定到可调用术语时为true。因此,您可以编写例如:
and(A,B) :- callable(A), callable(B), call((A,B)).
and(A,B) :- A=:=1, B=:=1.