gpt4 book ai didi

prolog - 来自GNU Prolog的不连续谓词警告

转载 作者:行者123 更新时间:2023-12-03 12:11:56 26 4
gpt4 key购买 nike

对于 lark ,我已经开始通过http://www.learnprolognow.org/学习Prolog。我的借口是我才刚刚开始。

我不确定应如何编写以下(简单?)练习以达到预期效果。
http://cs.union.edu/~striegnk/learn-prolog-now/html/node13.html#sec.l1.exercises

我可以看到Gnu Prolog 1.4(http://www.gprolog.org/)不满意向导\ 1的第二个谓词不在第一个谓词旁边。我可以重新排序该程序以使其正常工作,但随后我得到的代码对我的新手Prolog来说比下面介绍的代码难懂。

我是否缺少明显的东西?

wiz.pl

wizard(ron).
hasWand(harry).
quidditchPlayer(harry).

wizard(X) :- hasBroom(X),hasWand(X).
hasBroom(X) :- quidditchPlayer(X).

咨询wiz.pl
| ?- [wiz].
compiling D:/wiz.pl for byte code...
D:/wiz.pl:5: warning: discontiguous predicate wizard/1 - clause ignored
D:/wiz.pl compiled, 5 lines read - 632 bytes written, 24 ms

最佳答案

大多数Prolog都希望将任何特定谓词的子句一起列出,除非您做了一些魔术。我很惊讶Striegnitz和Bos忽略了这一点。将程序更改为

% all clauses for wizard/1
wizard(ron).
wizard(X) :- hasBroom(X),hasWand(X).

hasWand(harry).
quidditchPlayer(harry).
hasBroom(X) :- quidditchPlayer(X).

请注意,我将 wizard/1的子句保留为与原始程序相同的顺序。对于像这样的简单知识库而言,顺序并不重要,但是在实现非确定性算法时,子句顺序可以确定生成解决方案的顺序。

关于prolog - 来自GNU Prolog的不连续谓词警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7400904/

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