怎么做算术?

时间:2013-10-25 02:47:05

标签: prolog

:- 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

1 个答案:

答案 0 :(得分:2)

对于prolog将某些内容识别为算术计算,您必须使用is明确声明它:

runtest :-
    somepig(X)
    Y is X + 3,
    writeln(Y). % outputs 9

有关详细信息,请参阅this answer