:- dynamic somepig/1.
runtest :-
assert(somepig(6)), % Edit : just to be more precise, somepig is dynamic
somepig(X),
writeln(X+3).
此代码最终打印“6 + 3”。我猜测X是采取不能做关节的类型,或者当我分配“somepig”时,“6”自动被认为是字符串或其他。
无论如何我可以明确地将X指定为整数或其他吗?这样的事可能吗?
runtest :-
somepig(X is int)
writeln(X+3). % outputs 9
答案 0 :(得分:2)
对于prolog将某些内容识别为算术计算,您必须使用is
明确声明它:
runtest :-
somepig(X)
Y is X + 3,
writeln(Y). % outputs 9
有关详细信息,请参阅this answer。