【发布时间】:2014-12-15 12:28:27
【问题描述】:
我是 Prolog 的初学者。我正在努力创建一个规则,该规则将列表作为参数并将列表传递给另一个规则。这是我的代码:
combine([], '').
combine([L|List], Total) :-
combine(List, CombinedRest),
atom_concat(L, CombinedRest, Total).
findHeadline([W|Words], Combined) :-
combine(Words, Combined).
findHeadline2([Words], Combined) :-
combine(Words, Combined).
findHeadline 按预期工作,但 findHeadline2 没有。这是输出:
1 ?- findHeadline([billig, enkeltmand], Combination).
Combination = enkeltmand.
2 ?- findHeadline2([billig, enkeltmand], Combination).
false.
我期待 findHeadline 的输出是:
Combination = billigenkeltmand.
这怎么行不通?
我尝试在 SWI-prolog 中使用跟踪,但它没有给我任何线索,因为 findHeadline 规则立即退出并且根本不调用组合规则。
【问题讨论】:
-
既然
Words已经是一个列表,那么[Words]就是一个由一个元素组成的列表。你只想要findHeadLine2(Words, Combined)...
标签: prolog