我对prolog相对较新,我想要做的是创建一个列表,但我似乎遇到了一个错误,我不太清楚为什么。
这是更详细的前景的跟踪,这是自然语言分析器的一部分。
退出:(75,513)adj(女性)?蠕变
致电:(75,513)名单:追加(_G5921885,[adj(女)),_ G5921887)?蠕变
退出:(75,513)列出:追加([],[adj(女性)],[adj(女性)])?蠕变
致电:(75,513)np2([七项全能,胜利者,曾经,运动员],_G5921869,_G5921887,[],[adj(女性)])?
所以...起初每个都可以并且被添加到列表中但是当它尝试将第二个项目添加到列表时会发生这种情况....
致电:(75,514)adj(七项全能)?蠕变
退出:(75,514)adj(七项全能)?蠕变
致电:(75,514)列出:追加([],[adj(七项全能)],[adj(女性)])?蠕变
失败:(75,514)列出:追加([],[adj(七项全能)],[adj(女性)])?蠕变
以下是附加列表的代码:
追加(列表,[ADJ(H)],TARGETLIST),
NP2(T,休息,REM,列表,TARGETLIST)。
如果有人可以分享我出错的地方,以及如何解决这个问题,那就太好了。
答案 0 :(得分:2)
就在这里:
Call: (75,514) lists:append([], [adj(heptathlon)], [adj(womens)])
这不可能成功,因为append/3
的定义与之相矛盾。
追加(?List1 ,?List2 ,?List1AndList2 ):
List1AndList2 是 List1 和 List2
的串联
在您的情况下, List1 是空列表[]
,因此 List1andList2 应与 List2 相同,但它不是。我真的不知道你的程序的逻辑,以进一步帮助。如果您尝试使用append/3
附加 List1 和 List2 (而不是分割 List1andList2 ),您应该确保 List1andList2 是调用append/3
时未经实例化的变量。