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添加功能的主要内容,如果未能解决你的问题,请参考以下文章

如何将按钮功能添加到片段中

Prolog中的广度优先搜索

如何在Sublime Text中添加代码片段

在片段中实现对话框时,必须在添加内容之前请求窗口功能

Amzi 是不是只支持调试器功能! prolog 商业版?

VS中添加自定义代码片段——偷懒小技巧