gpt4 book ai didi

Prolog:如何在添加之前检查数据库中是否存在项目?

转载 作者:行者123 更新时间:2023-12-01 13:01:48 25 4
gpt4 key购买 nike

我从一个空白数据库开始。我需要向其中添加一些数据库条目,例如:

person(John,male)
person(Veronica,female)
person(Jessica,female)

我正在添加这样的条目:

add_person(N,G):-asserta(person(N,G)).

但是,我不想添加同一个人两次,所以我需要在添加之前进行检查。

我正在尝试这样做:

add_person(N,G):- \+ person(N,G),asserta(person(N,G)).

问题是如果我的数据库是空的,我就不能用 person(John,male) 查询数据库。所以 person(N,G) 因存在错误而失败,我根本无法添加。

有什么想法吗?

最佳答案

我不确定您使用的是哪个 Prolog 变体,但您可以通过将此行放在代码顶部来声明一些谓词是动态的:

:- dynamic person/2.

这在 SWI-Prolog documentation 中有描述.

关于Prolog:如何在添加之前检查数据库中是否存在项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5444963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com