在prolog中加入谓词

时间:2012-11-27 02:14:48

标签: prolog

我正在使用SWI-Prolog在Prolog中进行练习,采用嵌套列表并将其转换为元素列表然后制作元素的总和,我制作了两个单独的谓词,这些都使我成为两个功能:< / p>

my_flatten(X,[X]) - &gt;通过将每个列表替换为其元素(递归),将列表转换为可能将列表作为元素保存到“平面”列表中。

my_flatten(X,[X]) :- \+ is_list(X).
my_flatten([],[]).
my_flatten([X|Xs],Zs) :-
   my_flatten(X,Y), my_flatten(Xs,Ys), append(Y,Ys,Zs).

addList-&GT;添加列表的所有元素并返回其总和

addList([],0).
addList([X|Xs],N):-
   addList(Xs,N0),N is X+N0.

问题本身就是我是Prolog中的新编程,我不知道如何在同一个谓词中连接两个谓词,因此my_flattern返回的列表将被谓词addList使用。也许这是一个有点愚蠢的问题,但我已经坚持了几天。我需要一些帮助来澄清这个问题以解决其他问题

1 个答案:

答案 0 :(得分:2)

要构建一个同时执行这两项操作的新谓词,只需使用共享变量调用my_flattenaddList

addListFlattened(L, Sum) :-
    my_flatten(L, L2),
    addList(L2, Sum).

addListFlattened是一个新谓词(您可以更改名称),它会重复使用addList