gpt4 book ai didi

Prolog 动态谓词基本用法

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

使用此知识库 https://swish.swi-prolog.org

:- dynamic happy/1.

go:-
assert(happy(mia)),
write(happy(mia)).

如果我运行go。我得到

happy(mia)
true

如果我有

:- dynamic happy/1.

assert(happy(mia)).

并运行happy(mia),我得到false

请问我缺少什么基本概念?

最佳答案

当你写下:

assert(happy(mia)).

您正在(重新)定义谓词 assert/1 ,而不是像 go/0 的定义中那样调用它谓词。因此,happy(mia) 从不添加到数据库中。由于谓词 happy/1,查询失败系统知道(感谢 dynamic/1 指令),但没有子句。

大多数 Prolog 系统都阻止重新定义标准内置谓词。但是assert/1是遗留/已弃用的谓词。这就解释了为什么 SWI-Prolog 不会提示重新定义。始终使用标准assertz/1谓词而不是 assert/1 .

关于Prolog 动态谓词基本用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55137955/

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