2012-01-06 78 views
0

我知道这是一个非常简单的问题,但我似乎有一些问题。序言列表(使用词干函数)

我试图阻止使用porter_stem单词的列表,但我得到一个错误:

Out of local stack

这是我的代码:

stemming([],[]). 
stemming([H|T], A) :- 
    stemming(T,Answer), 
    porter_stem(H,S), 
    append(Answer,S,A). 

基本上是这个伪代码如下:

for all items in list 
    stem item 
    add item to list2 
    return list2 

任何人都可以请我指出正确的方向吗?

+0

好了,你所产生的谓词做的第一件事就是打电话制止,它应该是它所做的最后一件事。 – m09 2012-01-06 23:15:08

+0

谢谢,修正。仍然得到相同的错误,虽然:/ – Lilz 2012-01-07 00:07:52

+2

如果你想,我可以详细给你一个正常的递归,但你尝试使用'maplist/3'或同等取决于你的序言实现吗?像'maplist(porter_stem,List,Result).'就足够了。 – m09 2012-01-07 00:32:53

回答

1

考虑使用maplist/3或等价物,具体取决于您的序言实现:类似maplist(porter_stem, List, Result).就足够了。

如果您有兴趣学习如何建立一个正确的递归,发表评论,我会尽力扩大我的答案:)

+0

非常感谢!如果我能理解我粘贴的代码有什么问题,我会非常感激。 – Lilz 2012-01-07 20:27:59