小编Mat*_*att的帖子

SWI-Prolog 中的未定义过程不起作用

我刚刚开始使用 Prolog,并且已经在一个看似简单的示例中遇到了问题。这是我的 .pl 文件:

hacker(P) :- mountaindew(P), doesntsleep(P).
hacker(P) :- writesgoodcode(P).
writesgoodcode(jeff).
Run Code Online (Sandbox Code Playgroud)

然后,在将程序加载到 swipl 中后,我在提示符下用这一行测试它

writesgoodcode(jeff).
Run Code Online (Sandbox Code Playgroud)

我以为它会显示 true,但我收到此错误:

?- hacker(jeff).
ERROR: hacker/1: Undefined procedure: mountaindew/1
   Exception: (7) hacker(jeff) ? 
Run Code Online (Sandbox Code Playgroud)

该程序运行良好,但这并不能解决我的问题:

hacker(P) :- writesgoodcode(P).
writesgoodcode(jeff).

$ swipl -s dumb.pl
% dumb.pl compiled 0.00 sec, 1,112 bytes

?- hacker(jeff).
true.
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么我原来的程序不起作用?根据我的理解,Prolog 应该“跳过”第一条语句,因为它没有足够的信息,并检查下一行。它确实有足够的信息用于第二行,因此它应该评估为真。任何帮助或正确方向的观点都会很棒。谢谢。

procedure prolog undefined

6
推荐指数
1
解决办法
8935
查看次数

标签 统计

procedure ×1

prolog ×1

undefined ×1