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

1 回答 1

2

为了让 prolog 将某些东西识别为算术计算,您必须使用以下命令显式声明它is

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

有关更多详细信息,请参阅此答案

于 2013-10-25T02:53:55.407 回答