Prolog计算2D列表的总和

时间:2017-04-15 19:59:10

标签: prolog

我写了这段代码:

sum_list([], 0).
sum_list([H|T], X) :-
   sum_list(T, Rest),
   X is H + Rest.

它计算所有列表元素的总和。例如,如果我打电话:

sum_list([1,2,3], X).

它返回6.但我还想能够计算2D列表的总和。例如,如果我通过sum_list([[1,2],[3,4]], X)。我会得到10。 但是当我试图通过这个清单时,我得到了:

uncaught exception: error(type_error(evaluable,'.'/2),(is)/2)

错误。这个错误有什么问题?我无法在网上找到有关它的任何有用信息。

1 个答案:

答案 0 :(得分:1)

sum_list期待一维数组,您可以尝试这样的事情:

sum2D_list([X|T],R):-
sum2D_list(T,R2),
sum_list(X,R3),
R is R3+R2.
sum2D_list([],0).

我用

尝试了
sum2D_list([[1,2],[3,4]],X).

结果是

X = 10.