0

我对 prolog 比较陌生,我想做的是创建一个列表,但我似乎遇到了一个错误,我不太清楚为什么。

这是更详细的前景的跟踪,这是自然语言解析器的一部分。

退出:(75,513)adj(女性)?蠕变

呼叫:(75,513) 列表:附加(_G5921885,[adj(womens)],_G5921887) ?蠕变

退出:(75,513) 列表:追加([],[adj(womens)],[adj(womens)]) ?蠕变

呼叫:(75,513) np2([七项全能,冠军,曾经,一个,运动员],_G5921869,_G5921887,[],[adj(womens)])?

所以...起初每个都可以并被添加到列表中,但是当它尝试将第二个项目添加到列表中时会发生这种情况......

呼叫:(75,514)adj(七项全能)?蠕变

退出:(75,514)adj(七项全能)?蠕变

呼叫:(75,514) 列表:追加([],[adj(heptathlon)],[adj(womens)]) ?蠕变

失败:(75,514) 列表:追加([],[adj(heptathlon)],[adj(womens)]) ?蠕变

这是附加列表的代码:

追加(列表,[adj(H)],目标列表),

np2(T,Rest,Rem,列表,目标列表)。

如果有人可以分享一些关于我哪里出错以及如何解决它的信息,那就太好了。

4

1 回答 1

2

就在这儿:

Call: (75,514) lists:append([], [adj(heptathlon)], [adj(womens)])

这不可能成功,因为 的定义append/3与它相矛盾。

附加(?List1?List2?List1AndList2):

List1AndList2List1List2的串联

在您的情况下,List1是空 list [],因此List1andList2应该与List2相同,但事实并非如此。我真的不知道您的程序的逻辑可以进一步提供帮助。如果您尝试使用append/3附加List1List2(而不是例如拆分List1andList2),您应该确保List1andList2在调用append/3.

于 2013-04-25T07:36:08.697 回答