【发布时间】:2023-03-24 06:04:02
【问题描述】:
:- 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
【问题讨论】:
-
@skin 在标准 Prolog 中无法声明变量类型。您可以使用诸如
number/1之类的谓词来限制变量的域,但无论如何(如下所述)这不是您的问题。
标签: prolog