Prolog结果不存储

Prolog结果不存储,prolog,Prolog,问题 我想把规则中的加法存储在fresult中 代码: 如果希望fresult“返回”一个值,则必须为其再添加一个参数: fresult(P, Q, Sum) :- Sum is P + Q. 请注意,必须使用is运算符强制Prolog将p+Q视为算术表达式,并将其求值为一个数字 然后你可以这样称呼它: gresult :- ..., fresult(P, Q, Sum), write(Sum), nl. 请将您的代码形式化,并清楚地描述您的预期结果问

问题 我想把规则中的加法存储在fresult中

代码:


如果希望
fresult
“返回”一个值,则必须为其再添加一个参数:

fresult(P, Q, Sum) :-
    Sum is P + Q.
请注意,必须使用
is
运算符强制Prolog将
p+Q
视为算术表达式,并将其求值为一个数字

然后你可以这样称呼它:

gresult :-
    ...,
    fresult(P, Q, Sum),
    write(Sum),
    nl.

请将您的代码形式化,并清楚地描述您的预期结果问题我希望将规则代码中的某一项存储在fresult中:gresult:-write(‘输入第一个数字’)、nl、read(P)、nl、write(‘输入第二个数字’)、nl、read(Q)、nl、write(‘输入结果是’)、nl、fresult(P、Q)、nl、write(fresult)。fresult(P,Q):-P+Q.
fresult(P,Q):-P+Q.
正在创建一个不会在任何地方出现的术语
P+Q
。您可能想做一些更像
Result是P+Q,asserta(Result(Result))
,然后您可以稍后通过执行
Result(Result)
来实现它。但是当然,使用
asserta/1
是很恶心的,如果它不是完全必要的,您只是想打印它吗?在这种情况下,只需执行
结果为P+Q,写入(结果),nl。
gresult :-
    ...,
    fresult(P, Q, Sum),
    write(Sum),
    nl.