Prolog添加功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prolog添加功能相关的知识,希望对你有一定的参考价值。
我是Prolog的新手。我有这样的事实:
user(alice).
user(bob).
money(alice,10).
money(bob,20).
事实意味着爱丽丝有10美元和20美元。为了学习Prolog,我想开发一个在两个用户之间转账的功能。我的功能应该输入接收器的名称和数量,并将数量添加到接收器。
example: add(alice,20)
输出应该是30.实际上我的功能是:
add(X,Y,Z) :- Z is money(X,M) + Y.
但它不起作用。
我该如何实现呢?谢谢
答案
首先,当你想在用户兑换货币时修改谓词money/2
的事实时,你需要声明谓词动态:
:- dynamic(money/2).
其次,由于Prolog是一种关系语言,而不是一种函数式语言,因此你不能将表达式写成Z is money(X,M)
。相反,你需要写一些像:
add(User, Money) :-
% remove old clause and access how much money the user holds
retract(money(User, Current)),
% compute the updated amount of money the user will be holding
Updated is Current + Money,
% add updated fact
assertz(money(User, Updated).
以上是关于Prolog添加功能的主要内容,如果未能解决你的问题,请参考以下文章