我对prolog比较陌生,我想做的是创建一个列表,但我似乎遇到了一个错误,我不太确定原因。
这是更详细的展望的跟踪,这是自然语言解析器的一部分。
出口:(75,513) adj(女性)?蠕动
调用:(75,513)列表:append(_G5921885,adj(女性),_G5921887)?蠕动
退出:(75,513)列表:追加([],adj(女性),adj(女性))?蠕动
呼叫:(75,513) np2(七项全能,获胜者,曾,运动员,_G5921869,_G5921887,[],adj(女子))?
所以..。起初,every是OK的,并被添加到列表中,但当它试图向列表中添加第二个项目时,就会发生这种情况……
呼叫:(75,514) adj(七项全能)?蠕动
出口:(75,514) adj(七项全能)?蠕动
调用:(75,514)列表:append([],adj(七项全能),adj(女性))?蠕动
失败:(75,514)列表:append([],adj(七项全能),adj(女性))?蠕动
下面是附加列表的代码:
append(列表,adj(H),TargetList),
np2(T,Rest,Rem,List,TargetList)。
如果有人能分享一些关于我哪里出了错以及如何解决它的一些光,那就太好了。
发布于 2013-04-25 15:36:09
就在这里:
Call: (75,514) lists:append([], [adj(heptathlon)], [adj(womens)])这是不可能成功的,因为append/3的定义与此相矛盾。
追加(?列表1,?列表2,?列表1和列表2):
List1AndList2是List1和List2的组合
在您的例子中,List1是空列表[],所以List1andList2应该与List2相同,但事实并非如此,我真的不知道您的程序的逻辑有什么用。如果您试图使用append/3来附加List1和List2 (而不是拆分List1andList2),那么应该确保List1andList2在调用append/3时是一个未实例化的变量。
https://stackoverflow.com/questions/16208038
复制相似问题